PTA 数据结构顺序表操作集

  • 6-1 顺序表---插入结点 (50 分)

    创建顺序表,在顺序表中插入一个结点。 顺序表结构定义如下:

    typedef char ElemType;
    typedef struct 
    {
    	ElemType data[MaxSize];
       	int length;
    } SqList;
    

    要求写出:

    void DispList(SqList *L);  //输出顺序表,每个结点之间空格符间隔。
    bool ListInsert(SqList *&L,int i,ElemType e);  //在顺序表第i个位置上插入一个结点,插入成功时,返回TRUE,否则返回FALSE.
    

    函数接口定义:

    void InitList(SqList *&L);	//初始化线性表  .由裁判程序实现。
    void DispList(SqList *L);  //输出顺序表,每个结点之间空格符间隔。
    bool ListInsert(SqList *&L,int i,ElemType e);  //在顺序表第i个位置上插入一个结点,插入成功时,返回TRUE,否则返回FALSE.
    

    裁判测试程序样例:

    
    #include 
    #include 
    #define MaxSize 1000
    typedef char ElemType;
    typedef struct 
    {
    	ElemType data[MaxSize];
       	int length;
    } SqList;
    void InitList(SqList *&L);	//初始化线性表
    void DispList(SqList *L);
    bool ListInsert(SqList *&L,int i,ElemType e);
    
    int main()
    {
    	SqList *L;
    	ElemType e,ch;
    	int i=1;
    	InitList(L);
    	while((ch=getchar())!='\n')
    	{
    		ListInsert(L,i,ch);  //在L的第i个元素位置上插入ch
    		i++;
    	}
    	DispList(L);
    	scanf("\n%d %c",&i,&ch);
    	if ( ListInsert(L,i,ch))
    			DispList(L);
    }
    
    /* 请在这里填写答案 */
    

    输入样例:

    在这里给出一组输入。例如:

    abcdefghijk
    5 X
    

    输出样例:

    在这里给出相应的输出。例如:

    a b c d e f g h i j k 
    a b c d X e f g h i j k 
    
  • 提交版本:

  • void DispList(SqList *L)
    {
        int i;
        for(i = 0;i < L->length;i++)
      printf("%c ",L->data[i]);
        printf("\n");
    }


    bool ListInsert(SqList *&L,int i,ElemType e){
         if(i < 1 || i > L->length+1 || L->length == MaxSize) 
              return false;
          int j; 
          i--; 
          if(i >= L->length){
            L->data[i] = e;
            L->length++;
          }  
          else{
           for(j = L->length;j > i;j--){
              L->data[j] = L->data[j-1];
            }
             L->data[i] = e;
                 L->length++;
          }
             return true;
    }

你可能感兴趣的:(C语言)