线性表(linearlist 或sequentlist)是一种最简单且最常用的数据结构,对以后链表、树、图的理解有很大的帮助。下面是实现代码 #include"stdio.h" #include"malloc.h" struct SqList{ int * listbase; int len; //指定的存储空间 int size; //表长度 }; int InitList(struct SqList*p,int length){ p->listbase = (int *)malloc(length*sizeof(int)); if (NULL == p->listbase) { printf("内存分配失败\n"); return 0; } else { p->len = length; p->size = 0; } return 0; } int InserList(struct SqList*p,int i,int val) { int*q1,*q2; if(p->len==p->size){ printf("数组已满,无法插入\n"); return 0; } else q1 = p->listbase+i-1; q2= p->listbase+p->size-1; for(q2;q1<=q2;q2--) *(q2+1) = *q2; *q1= val; p->size++; return 0; } int DeleList(struct SqList*p,int i){ int *q1,*q2; if(i<1 i="">p->len) printf("输入有误\n"); else q1 = p->listbase+i-1; q2 = p->listbase+p->size-1; printf("删除第%d的元素:%d\n",i,*q1); for(q1++;q1<=q2;q1++) *(q1-1)=*(q1); p->size--; return 0; } void ShowList(struct SqList*p){ int i; if(0==p->size) printf("数组为空\n"); else for(i=0;i<p->size;i++) printf("%d\n",*(p->listbase+i)); } int AppendList(struct SqList*p,int val){ int * q1,*q2; if(p->len ==p->size) { printf("数组已满\n"); return 0; } else { p->listbase[p->size] = val; p->size++; } return 0; } void main(){ struct SqList sqlist; InitList(&sqlist,10); AppendList(&sqlist,1); AppendList(&sqlist,2); AppendList(&sqlist,3); AppendList(&sqlist,5); InserList(&sqlist,4,4); InserList(&sqlist,3,6); DeleList(&sqlist,3); ShowList(&sqlist); } </p-></1>