欢迎来到天天文库
浏览记录
ID:14515251
大小:400.00 KB
页数:7页
时间:2018-07-29
《顺序表的初始化及基本操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineLIST_INIT_SIZE100//线性表存储空间的初始分配量#defineLINSTINCREMENT10//线性表存储空间的分配增量typedefintStatus;#include#includetypedefintElemType;intmenu_select()//菜单函数{charc;do{system("
2、cls");//运行前清屏printf("tt**************线性表的查找、插入、删除***************");//菜单选择printf("tt
3、
4、a.建立一个线性表
5、
6、");printf("tt
7、
8、b.查找线性表中第i个元素
9、
10、");printf("tt
11、
12、c.在线性表中第i个位置插入一个元素
13、
14、");printf("tt
15、
16、d.删除在线性表中第i个位置的元素
17、
18、");printf("tt
19、
20、e.输出线性表中的所有元素
21、
22、");printf("tt*******
23、********************************");printf("ttt请输入您的选择功能的序号(a-e):");c=getchar();printf("");printf("");}while(c<'a'
24、
25、c>'e');return(c-'a');//返回选择}typedefstruct{int*elem;//存储空间基址intlength;//当前长度intlistsize;//当前分配的存储容量(以sizeof(ElemType)为单位)}SqList;SqListL;StatusInitL
26、ist_Sq(SqList&L)//构造一个新的线性表L。{inti,n;L.elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));if(!L.elem)returnERROR;//存储分配失败L.length=0;//空表长度为0L.listsize=LIST_INIT_SIZE;//初始存储容量printf("请输入线性表的元素的个数:");scanf("%d",&n);for(i=0;i27、=n;returnOK;}Statusabc(SqList&L)//输出线性表中所有元素{inti;for(i=0;i28、位置!",e,i+1);elseprintf("表中没有元素%d!",e);}StatusListInsert_Sq(SqList&L,inti,ElemTypee)//在线性表L中插入新的元素e{ElemType*p;int*newbase;if(i<129、30、i>L.length+1)returnERROR;if(L.length>=L.listsize){//当前存储空间已满,增加容量ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LINSTINCREMENT)*s31、izeof(ElemType));if(!newbase)returnERROR;//存储分配失败L.elem=newbase;//新基址L.listsize+=LINSTINCREMENT;//增加存储容量}ElemType*q=&(L.elem[i-1]);//q为插入位置for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;//插入位置及之后的元素右移*q=e;//插入e++L.length;//表长增1returnOK;}StatusListDelete_Sq(SqList&L,inti,32、ElemType&e)//在顺序线性表L中删除第i个元素,并用e返回其值。{ElemType*p,*q;if(i<133、34、i>L.length)returnERROR;//i值不合法p=&(L.elem[i-
27、=n;returnOK;}Statusabc(SqList&L)//输出线性表中所有元素{inti;for(i=0;i28、位置!",e,i+1);elseprintf("表中没有元素%d!",e);}StatusListInsert_Sq(SqList&L,inti,ElemTypee)//在线性表L中插入新的元素e{ElemType*p;int*newbase;if(i<129、30、i>L.length+1)returnERROR;if(L.length>=L.listsize){//当前存储空间已满,增加容量ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LINSTINCREMENT)*s31、izeof(ElemType));if(!newbase)returnERROR;//存储分配失败L.elem=newbase;//新基址L.listsize+=LINSTINCREMENT;//增加存储容量}ElemType*q=&(L.elem[i-1]);//q为插入位置for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;//插入位置及之后的元素右移*q=e;//插入e++L.length;//表长增1returnOK;}StatusListDelete_Sq(SqList&L,inti,32、ElemType&e)//在顺序线性表L中删除第i个元素,并用e返回其值。{ElemType*p,*q;if(i<133、34、i>L.length)returnERROR;//i值不合法p=&(L.elem[i-
28、位置!",e,i+1);elseprintf("表中没有元素%d!",e);}StatusListInsert_Sq(SqList&L,inti,ElemTypee)//在线性表L中插入新的元素e{ElemType*p;int*newbase;if(i<1
29、
30、i>L.length+1)returnERROR;if(L.length>=L.listsize){//当前存储空间已满,增加容量ElemType*newbase=(ElemType*)realloc(L.elem,(L.listsize+LINSTINCREMENT)*s
31、izeof(ElemType));if(!newbase)returnERROR;//存储分配失败L.elem=newbase;//新基址L.listsize+=LINSTINCREMENT;//增加存储容量}ElemType*q=&(L.elem[i-1]);//q为插入位置for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;//插入位置及之后的元素右移*q=e;//插入e++L.length;//表长增1returnOK;}StatusListDelete_Sq(SqList&L,inti,
32、ElemType&e)//在顺序线性表L中删除第i个元素,并用e返回其值。{ElemType*p,*q;if(i<1
33、
34、i>L.length)returnERROR;//i值不合法p=&(L.elem[i-
此文档下载收益归作者所有