链表的建立、合并与拆分C++

链表的建立、合并与拆分C++

ID:47042799

大小:66.50 KB

页数:6页

时间:2019-07-06

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

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

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

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

3、nkNode*ptr=NULL)//构造函数{link=ptr;}LinkNode(constint&item,LinkNode*ptr=NULL)//构造函数{data=item;link=ptr;}};classList//线性链表类{protected:LinkNode*first;public:List(){first=newLinkNode();}//构造函数List(constint&x){first=newLinkNode(x);}//带一个整型参数的构造函数List(List&L);//

4、复制构造函数Listjishu(List&L);//存放数据为奇数的线性链表函数Listoushu(List&L);//存放数据为偶数的线性链表函数voidmakeEmpty();//将线性链表置空~List(){makeEmpty();}//析构函数voidsetData(inti,int&x);//给线性链表的第i个结点赋值xboolgetData(inti,int&x);//获取线性链表的第i个结点的值,并把他存储在变量x里LinkNode*Locate(inti);//定位线性链表的第i个结点,

5、并返回该结点的指针LinkNode*getHead()const{returnfirst;}//获取线性链表的头指针intLength()const//求线性链表的长度{LinkNode*p=first->link;intcount=0;while(p!=NULL){p=p->link;count++;}returncount;}boolInsert(inti,int&x);//在第i个元素后插入xvoidinput();//在链表里面输入值。voidoutput();//输出链表里面的元素。voidn

6、izhi();//将线性链表逆置voidfenList(List&a,List&b);//将线性链表拆分为两个链表,其中a链//表存放原链表中数据域为奇数的结点,b链表存放原链表中数据域为偶数的链表LinkNode*search();//搜索x在线性链表中的位置,函数返回表项序号boolRemove(int&x);6//将链表中第i个结点的元素删除Listhebing(List&A,List&B);//合并链表的函数,并按照题目要求的顺序合并voidxunhuan();//把一个线性单链表置为循环线性链

7、表};List::List(List&L)//复制构造函数{intvalue;LinkNode*srcptr=L.getHead();LinkNode*destptr=first=newLinkNode;while(srcptr->link!=NULL){value=srcptr->link->data;destptr->link=newLinkNode(value);destptr=destptr->link;srcptr=srcptr->link;}destptr->link=NULL;}ListL

8、ist::jishu(List&L)//存放数据为奇数的链表{intvalue;LinkNode*srcptr=L.getHead();LinkNode*destptr=first=newLinkNode;while(srcptr->link!=NULL){if(srcptr->link->data%2!=0){value=srcptr->link->data;destptr->link=newLinkNode(value);destptr

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

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

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