user-0 提问: 求大佬帮我看看这个程序哪错了

回复:
user: user-1
content: #include <stdio.h> #include <malloc.h>  #define ERROR 0 #define OK 1 #define INIT_SIZE 10   /*初始分配的顺序表长度 */ #define INCREM 5   /*溢出时，顺序表长度的增量*/  typedef int ElemType;   /*定义表元素的类型 */ typedef struct Sqlist{     ElemType *slist;   /*存储空间的基地址 */     int length;   /*顺序表的当前长度 */     int listsize;   /*当前分配的存储空间 */ }Sqlist;  int InitList_sq(Sqlist*L);   /*构建一个新的线性表 */ int CreateList_sq(Sqlist*L, int n);   /*输入顺序表数据元素 */ int ListInsert_sq(Sqlist*L, int i, ElemType e);   /*在顺序表中第i个位置插入新的元素 */ int PrintList_sq(Sqlist*L);   /*输出顺序表的元素 */ int ListDelete_sq(Sqlist*L, int i);   /*删除第i个元素 */ int ListLocate(Sqlist*L, ElemType e);   /*查找值为e的元素 */  /****************************************************/ /*               构造一个新的线性表                 */ /****************************************************/  int InitList_sq(Sqlist*L) {     L->slist=(ElemType*)malloc(INIT_SIZE*sizeof(ElemType));     if(!L->slist)         return ERROR;     L->length = 0;     L->listsize = INIT_SIZE;      return OK; }/*InitList */  /****************************************************/ /*           输入顺序表数据元素                     */ /****************************************************/  int CreateList_sq(Sqlist*L, int n) {     ElemType e;     int i;     for(i=0; i<n; i++)     {         printf("input data%d: ", i+1);         scanf("%d", &e);         if(!ListInsert_sq(L, i+1, e))             return ERROR;     }     return OK; }/*CreateList */  /****************************************************/ /*            输出顺序表中的元素                    */ /****************************************************/  int PrintList_sq(Sqlist*L){     int i;     for(i=1; i<=L->length; i++)         printf("%5d", L->slist[i-1]);     return OK; }/*PrintList */  /****************************************************/ /*             在顺序表中第i个位置插入新的元素      */ /****************************************************/  int ListInsert_sq(Sqlist*L, int i, ElemType e) {     int k;     if(i < 1 || i > L->length + 1)         return ERROR;      if(L->length >= L->listsize)     {         L->slist = (ElemType*)realloc(L->slist, (INIT_SIZE+INCREM)*sizeof(ElemType));         if(!L->slist)             return ERROR;         L->listsize += INCREM;     }     for(k = L->length-1; k>=i-1; k--)         L->slist[k+1] = L->slist[k];     L->slist[i-1] = e;     L->length++;      return OK; }/*ListInsert */  /****************************************************/ /*         在顺序表中删除第i个元素                  */ /****************************************************/  int ListDelete_sq(Sqlist*L, int i, ElemType *e){     int k;     if(L->length==0)          /*线性表为空*/         return ERROR;     if(i<1 || i>L->length)    /*删除位置不正确*/         return ERROR;     if(i<L->length)      /* 如果删除不是最后位置*/     {         for(k=i; k<L->length; k++)   /*将删除位置后继元素前移*/             L->slist[k-1]=L->slist[k];     }     L->length--;     return OK; }/*ListDelete*/  /****************************************************/ /*          在顺序表中查找指定元素，返回其序号      */ /****************************************************/  int ListLocate(Sqlist*L, ElemType e) {     printf("请输入查找的元素");     scanf("%d", &e);     for(int j=0; j<L->length; j++){         if(L->slist[j]==e) {             printf("%d在顺序表是第%d元素.\n", e, L->slist[j]);             return j;         }     }      return -1; } int main(void) {     Sqlist sl;     int n, m, k;     printf("please input n:"); /* 输入顺序表的元素个数*/     scanf("%d", &n);     if (n <= 0) {         printf("ERROR");         return -1;     }      InitList_sq(&sl);     //if(n>0){     printf("\n1-Create Sqlist:\n");     CreateList_sq(&sl, n);     printf("\n2-Print Sqlist:\n");     PrintList_sq(&sl);     printf("\nplease input insert location and data:(location, data)\n");     scanf("%d,%d", &m, &k);     ListInsert_sq(&sl, m, k);     printf("\n3-Printf Sqlist:\n");     PrintList_sq(&sl);     printf("\n");     //}     //else     //   printf("ERROR");     return 0; }  供参考！  注释不需要太多，有些注释完全可以去掉，多了反而负副作用，不利于代码的阅读。 建议对比代码找出自己的问题，希望你能学到东西