资源描述:
《实验一 线性表的存储结构 实验代码及运行截图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、线性表的存储结构实验代码及运行截图#defineLIST_INIT_SIZE20//线性表存储空间的初始分配量#defineLISTINCREMENT10//线性表存储空间的分配增量#include"stdio.h"#include"stdlib.h"typedefstruct{int*elem;//当前空间基址intlength;//当前长度intlistsize;//当前分配的存储容量}SqList;SqListL;intInitList_sq(SqList&L){L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));i
2、f(!L.elem)exit(0);L.length=0;L.listsize=LIST_INIT_SIZE;return1;}intListInsert_sq(SqList&L,inti,inte){int*p,*q;int*newbase;printf("输入插入位置:");scanf("%d",&i);if(i<1
3、
4、i>L.length+1)return1;if(L.length>=L.listsize){newbase=(int*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(int));if(!ne
5、wbase)return(0);L.elem=newbase;L.listsize+=LISTINCREMENT;}printf("输入插入元素:");scanf("%d",&e);q=&(L.elem[i-1]);for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;*q=e;++L.length;return1;}intListDelete_sq(SqList&L,inti){int*p,*q;printf("输入删除位置:");scanf("%d",&i);if((i<1)
6、
7、(i>L.length))retur
8、n(0);p=&(L.elem[i-1]);q=L.elem+L.length-1;for(++p;p<=q;++p)*(p-1)=*p;--L.length;return1;}intListfind_sq(SqList&L,inti){intp;if(!L.elem
9、
10、L.length<1
11、
12、L.length>L.listsize){printf("Empty!");return0;}printf("输入查找元素位置:");scanf("%d",&i);if((i<1)
13、
14、(i>L.length)){return(0);}elsep=(L.elem[i-1
15、]);printf("查找的元素为:");printf("%d",p);return1;}intListinput(SqList&L,inta){printf("输入元素(输入-1跳出):");while(1){scanf("%d",&a);if(a==-1){break;}L.elem[L.length]=a;L.length++;}return1;}intListPrint(SqList&L){inti;if(!L.elem
16、
17、L.length<1
18、
19、L.length>L.listsize){printf("Empty!");return0;}f
20、or(i=0;i建立线性表tt<2>输入数据");printf("<3>插入数据tt<4>删除数
21、据");printf("<5>查找数据ttt<6>显示数据");printf("<7>退出ttttt");printf("请输入操作键(1-7):");scanf("%d",&j);switch(j){case1:InitList_sq(L);printf("建表成功!");break;case2:if(!InitList_sq(L)){break;}Listinput(L,a);ListPrint(L);break;case3:ListInsert_sq(L,i,e);ListPrint(L);break;case4:L