求大神看看我的代码
程序代码:
本人刚开始学数据结构,编了一个基本的代码,可怎么也不成功,找不出错在哪里?求指导 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 #define ElemType int typedef struct { int *elem; int length; int listsize; }SqList; int InitList_Sq(SqList *L) { L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));// 算法2.3,构造一个空的线性表L,该线性表预定义大小为LIST_INIT_SIZE if(!L->elem)exit(ERROR); L->length=0; L->listsize=LIST_INIT_SIZE; return OK; } int Load_Sq(SqList *L) { // 输出顺序表中的所有元素 int i; if(!L->elem) printf("The List is empty!"); else { printf("The List is: "); for(i=0;i<L->length;i++) printf("%d ",L->elem); } printf("\n"); return OK; } int ListInsert_Sq(SqList *L,int i,int e) {int *newbase,*p,*q; // 算法2.4,在顺序线性表L中第i个位置之前插入新的元素e if(i<1||i>L->length+1)return ERROR;// i的合法值为1≤i≤L.length +1 if(L->length>=L->listsize) {newbase=(ElemType *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));} if(!newbase)exit(ERROR); L->elem=newbase; L->listsize+=LISTINCREMENT; q=&(L->elem[i-1]); for(p=&(L->elem[L->length-1]);p>=q;--p) *(p+1)=*p; *p=e; ++(L->length); return OK; } int ListDelete_Sq(SqList *L,int i, int e) {int *p,*q; // 算法2.5,在顺序线性表L中删除第i个位置的元素,并用e返回其值 if(i<1||i>L->length)return ERROR;// i的合法值为1≤i≤L.length p=&(L->elem[i-1]); e=*p; q=L->elem+L->length-1; for(++p;p<=q;++p)*(p-1)=*p; --L->length; return e; } int main() { SqList T; int a, i; ElemType e, x; if(InitList_Sq(&T) ) // 判断顺序表是否创建成功 { printf("A Sequence List Has Created.\n"); } while(1) { printf("1:Insert element\n2:Delete element\n3:Load all elements\n0:Exit\nPlease choose:\n"); scanf("%d",&a); switch(a) { case 1: scanf("%d%d",&i,&x); if( ListInsert_Sq(&T,i,x)) printf("Insert Error!\n"); // 判断i值是否合法 else printf("The Element %d is Successfully Inserted!\n", x); break; case 2: scanf("%d",&i); if(ListDelete_Sq(&T,i,e)) printf("Delete Error!\n"); // 判断i值是否合法 else printf("The Element %d is Successfully Deleted!\n", e); break; case 3: Load_Sq(&T); break; case 0: return 1; } } }