欢迎来到天天文库
浏览记录
ID:35342147
大小:63.78 KB
页数:9页
时间:2019-03-23
《实验1链表的应用-有序表的查找与合并》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1•实验题目线性表的应用2•实验内容有序表的查找与合并3•实验目的掌握线性表的概念及原理,运用线性表的原理完成实验题目中的内容。4•实验要求为了更好的掌握与理解课堂上老师所讲的概念与原理,实验前要认真预习所做的实验内容及编写源程序代码(写在纸上与盘中均可),以便在实验课中完成老师所布置的实验内容。5.概要设计原理6.详细程序清单及注释说明#includeusingnamespacestd;#include#include#includeh>#include#include
2、#include#include#include#include//#defineOVERFLOW-2#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1#defineLIST_INIT_SIZE100#defineLISTINCREMENT2//线性表存储空间的分配增量typedefintStatus;typedefintElemType;typedefstruct{int*elem;intlength;intlistsize;J
3、SqList;〃构建顺序表LintInitList_sq(SqList&L)L4、L)//初始条件:顺序线性表L已存在。操作结果:销毁顺序线独表L{if(ListEmpty(L))free(L.elem);L.elem=NULL;L.length=O;L.listsize=O;returnOK;}intClearList(SqList&L)〃初始条件:顺序线性表L已存在。操作结果:将L重置为空表{if(ListEmpty(L))L.length=0;returnOK;}intListInsert_sq(SqList&L,inti,int&e)//初始条件:顺序线性表L已存在,1WiWListLength(L)+1{//操作结果:在L屮第i个位置Z前插入新的数据元5、素e,L的长度加1int*q,*p,*newbase;if(i<16、7、i>(L.length+1))returnERROR;//i值不合法if(L.length>=L.listsize)//当前存储空间已满,增加分配{if(!(newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType))))exit(OVERFLOW);//存储分配失败L.elem=newbase;//新基址L.listsize+二LISTINCREMENT;//增加存储容量q=&(L.elem[i-l]);//q为插入8、位置for(p=&(L.elem[L.length-l]);p>=q;—p)*(p+l)=*p;〃插入位置及之后的元素右移*q=e;//插入e++L.length;〃表长增1returnOK;}//intListDelete_sq(SqList&L,inti)//初始条件:顺序线性表L已存在,1WiWListLength(L)//{int*q,*p;〃操作结果:删除L的第i个数据元素,并用e返冋其值,L的长度减1//inte;//if(i9、10、i>(L.length))returnERROR;//i值不合法//q=&L.elem[i-l];//q为删除元素位置〃e=*q;〃有e存11、被删元素//coutvv”删除的元素是:”;//cout«e«endl;//p=L.elem+L.length-1;//for(++q;q<=p;++q)//*(q-l)=*q;〃删除之后元素左移//—L.length;//表长减1//returnOK;//}intListLength_sq(SqListL){//初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数returnL.length;}intGetElem_sq(SqListL,inti){inte
4、L)//初始条件:顺序线性表L已存在。操作结果:销毁顺序线独表L{if(ListEmpty(L))free(L.elem);L.elem=NULL;L.length=O;L.listsize=O;returnOK;}intClearList(SqList&L)〃初始条件:顺序线性表L已存在。操作结果:将L重置为空表{if(ListEmpty(L))L.length=0;returnOK;}intListInsert_sq(SqList&L,inti,int&e)//初始条件:顺序线性表L已存在,1WiWListLength(L)+1{//操作结果:在L屮第i个位置Z前插入新的数据元
5、素e,L的长度加1int*q,*p,*newbase;if(i<1
6、
7、i>(L.length+1))returnERROR;//i值不合法if(L.length>=L.listsize)//当前存储空间已满,增加分配{if(!(newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType))))exit(OVERFLOW);//存储分配失败L.elem=newbase;//新基址L.listsize+二LISTINCREMENT;//增加存储容量q=&(L.elem[i-l]);//q为插入
8、位置for(p=&(L.elem[L.length-l]);p>=q;—p)*(p+l)=*p;〃插入位置及之后的元素右移*q=e;//插入e++L.length;〃表长增1returnOK;}//intListDelete_sq(SqList&L,inti)//初始条件:顺序线性表L已存在,1WiWListLength(L)//{int*q,*p;〃操作结果:删除L的第i个数据元素,并用e返冋其值,L的长度减1//inte;//if(i9、10、i>(L.length))returnERROR;//i值不合法//q=&L.elem[i-l];//q为删除元素位置〃e=*q;〃有e存11、被删元素//coutvv”删除的元素是:”;//cout«e«endl;//p=L.elem+L.length-1;//for(++q;q<=p;++q)//*(q-l)=*q;〃删除之后元素左移//—L.length;//表长减1//returnOK;//}intListLength_sq(SqListL){//初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数returnL.length;}intGetElem_sq(SqListL,inti){inte
9、
10、i>(L.length))returnERROR;//i值不合法//q=&L.elem[i-l];//q为删除元素位置〃e=*q;〃有e存
11、被删元素//coutvv”删除的元素是:”;//cout«e«endl;//p=L.elem+L.length-1;//for(++q;q<=p;++q)//*(q-l)=*q;〃删除之后元素左移//—L.length;//表长减1//returnOK;//}intListLength_sq(SqListL){//初始条件:顺序线性表L已存在。操作结果:返回L中数据元素个数returnL.length;}intGetElem_sq(SqListL,inti){inte
此文档下载收益归作者所有