链表建立、合并与拆分

链表建立、合并与拆分

ID:20588356

大小:151.00 KB

页数:8页

时间:2018-10-13

链表建立、合并与拆分_第1页
链表建立、合并与拆分_第2页
链表建立、合并与拆分_第3页
链表建立、合并与拆分_第4页
链表建立、合并与拆分_第5页
资源描述:

《链表建立、合并与拆分》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2链表的建立、合并与拆分【实验简介】链表是用链接存储的方式来表达线性表,它用指针表示结点间的逻辑关系,链表适用于插入或删除频繁,存储空间需求不定的情形。【实验内容】定义一个链表存储的线性表,除已给出的表元素插入、删除、查找等基本操作外,再提供表的合并、拆分和逆置等操作。在应用程序中建立两个整型的单链表对象A和B,应用线性表的基本操作对表的实例对象进行操作测试。1.设线性链表A=(a1,a2,…,am),,B=(b1,b2,…bm),按下列规则合并A,B为线性表C的算法,即使得C=(a1,b1,…,am,bm,b(m+

2、1),…,bn)当m<=n或C=(a1,b1,…,an,bn,a(n+1),…,am)当m>nC表利用A表和B表中的结点空间构成。2.将C表原地逆置。3.将C表的中偶数和奇数分别链接为两个循环链表D和E。说明:每一次合并、拆分和逆置等操作的结果均要输出。【主要代码】#includeusingnamespacestd;templatestructLinkNode//结点类{Tdata;LinkNode*link;LinkNode(LinkNode*ptr=NULL){li

3、nk=ptr;}//仅初始化指针成员的构造函数LinkNode(constT&item,LinkNode*ptr=NULL)//初始化数据成员和指针成员的构造函数{data=item;link=ptr;}};templateclassList//链表类{private:LinkNode*first;//链表头指针public:List(){first=newLinkNode;}//构造函数List(T&x){first=newLinkNode(x);}//构造函数List(Li

4、st&L);//复制构造函数~List(){MakeEmpty();}voidMakeEmpty();//将链表置为空表//intLength()const;//计算链表长度LinkNode*GetHead()const{returnfirst;}//返回附加头结点地址voidSetHead(LinkNode*p){first=p;}//设置附加头结点地址LinkNode*Search(Tx);//搜索含数据x的元素8LinkNode*Locate(inti);//搜索第i个元素的地址T*Ge

5、tData(inti,T&x);//取第i个元素的值boolSetData(inti,T&x);//用x修改第i个元素的值boolInsert(inti,T&x);//在第i个元素后插入xboolRemove(inti,T&x);//删除第i个元素,x返回该元素的值boolIsMmpty()const//判断表是否为空{returnfirst->link=NULL?true:false;}voidSort();voidInput(TendTag);////从前端输入,当输入字符endTag时结束输入voidOutpu

6、t();//输出List&operator=(List&L);//重载函数:赋值};template//将链表置为空表voidList::MakeEmpty(){LinkNode*q;while(first->link!=NULL){q=first->link;//保存被删结点first->link=q->link;//从链上摘下该结点deleteq;//删除}};template//计算链表长度intList::Length()const{ListNod

7、e*p=first->link;intcount=0;while(p!=NULL)//逐个结点检测{p=p->link;count++;}returncount;};template//在表中搜索含数据x的结点,搜索成功时函数返该结点地址;否则返回NULL。LinkNode*List::Search(Tx){LinkNode*current=first->link;while(current!=NULL&¤t->data!=x)current=current->li

8、nk;returncurrent;8};template//函数返回表中第i个元素的地址。若i<0或i超出表中结点个数,则返回NULL。LinkNode*List::Locate(inti){if(i<0)returnNULL;//i不合理LinkNode*current=first;intk=0;while(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。