欢迎来到天天文库
浏览记录
ID:15556183
大小:41.50 KB
页数:13页
时间:2018-08-04
《数据结构c++顺序表》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数据结构C++顺序表#include#include#include#includeusingnamespacestd;#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineOVERFLOW-2#defineLIST_INIT_SIZE100#defineLISTINCREMENT10typedefintStatus;typedefstruct{int*elem;intlengt
2、h;intlistsize;}SqList;//线性表的顺序存储结构StatusInitList_Sq(SqList&L){//构造一个空的线性表Lsystem("cls");L.elem=(int*)malloc(LIST_INIT_SIZE*sizeof(int));if(!L.elem)//存储分配失败{cout<<"ttt存储分配失败!";system("pause");exit(OVERFLOW);}L.length=0;L.listsize=LIST_INIT_SIZE;cout<<"ttt成功构造
3、线性表!";returnOK;}voidShowList_Sq(SqListL){int*p=L.elem,i;if(L.length==0)cout<<"ttt线性表中无元素可显示";else{cout<<"ttt";for(i=1;i<=L.length;i++)cout<<*p++<<"";cout<4、th=0;returnOK;}StatusListEmpty_Sq(SqListL){//判断是否为空表,为空,返回TURE,否则返回FALSEif(L.length==0)returnTRUE;elsereturnFALSE;}intListLength_Sq(SqListL){//返回L中数据元素的个数returnL.length;}StatusGetElem_Sq(SqListL,inti,int&e){//用e返回L中第i个数据元素的值if(i<15、6、i>ListLength_Sq(L))returnERROR;//i值不合法e=L.elem7、[i-1];returnOK;}Statuscompare(inta,intb){//两个元素的关系比较,若a=b,返回TURE,否则返回FALSEif(a==b)returnTRUE;elsereturnFALSE;}intLocateElem_Sq(SqListL,inte,Status(*compare)(int,int)){//在顺序线性表L中查找第1个值与e满足compare()的元素的位序,若找到,返回位序,否则返0inti=1,*p=L.elem;while(i<=L.length&&!(*compare)(*p++,e))++i;if8、(i<=L.length)returni;elsereturn0;}StatusPriorElem_Sq(SqListL,intcur_e,int&pre_e){//若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义inti=1,*p=L.elem;*p++;while(i<=L.length&&!(compare(*p++,cur_e)))++i;if(i<=L.length){pre_e=*(p-2);returnOK;}elsereturnERROR;}StatusNextElem_Sq(SqL9、istL,intcur_e,int&next_e){//若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义inti=1,*p=L.elem;while(i10、th_Sq(L)+1int*p;if(i<111、12、i>L.length+1)returnERROR;if(L.
4、th=0;returnOK;}StatusListEmpty_Sq(SqListL){//判断是否为空表,为空,返回TURE,否则返回FALSEif(L.length==0)returnTRUE;elsereturnFALSE;}intListLength_Sq(SqListL){//返回L中数据元素的个数returnL.length;}StatusGetElem_Sq(SqListL,inti,int&e){//用e返回L中第i个数据元素的值if(i<1
5、
6、i>ListLength_Sq(L))returnERROR;//i值不合法e=L.elem
7、[i-1];returnOK;}Statuscompare(inta,intb){//两个元素的关系比较,若a=b,返回TURE,否则返回FALSEif(a==b)returnTRUE;elsereturnFALSE;}intLocateElem_Sq(SqListL,inte,Status(*compare)(int,int)){//在顺序线性表L中查找第1个值与e满足compare()的元素的位序,若找到,返回位序,否则返0inti=1,*p=L.elem;while(i<=L.length&&!(*compare)(*p++,e))++i;if
8、(i<=L.length)returni;elsereturn0;}StatusPriorElem_Sq(SqListL,intcur_e,int&pre_e){//若cur_e是L的数据元素,且不是第一个,则用pre_e返回它的前驱,否则操作失败,pre_e无定义inti=1,*p=L.elem;*p++;while(i<=L.length&&!(compare(*p++,cur_e)))++i;if(i<=L.length){pre_e=*(p-2);returnOK;}elsereturnERROR;}StatusNextElem_Sq(SqL
9、istL,intcur_e,int&next_e){//若cur_e是L的数据元素,且不是最后一个,则用next_e返回它的后继,否则操作失败,next_e无定义inti=1,*p=L.elem;while(i10、th_Sq(L)+1int*p;if(i<111、12、i>L.length+1)returnERROR;if(L.
10、th_Sq(L)+1int*p;if(i<1
11、
12、i>L.length+1)returnERROR;if(L.
此文档下载收益归作者所有