ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:17.89KB ,
资源ID:8112073      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8112073.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单链表实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单链表实验报告.docx

1、单链表实验报告单链表实验报告实验目的: 1)理解线性表的链式存储结构;2)熟练掌握动态链表结构及有关算法的设计;3)根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法。实验要求:实验环境:visual c+ 6.0 实验内容及数据:1)求链表中第i个结点的指针(函数),若不存在,则返回NULL。实验测试数据基本要求:第一组数据:链表长度n10,i分别为5,n,0,n+1,n+2第二组数据:链表长度n=0,i分别为0,22)在第i个结点前插入值为x的结点。实验测试数据基本要求:第一组数据:链表长度n10,x=100, i分别为5,n,n+1,0,1,n+2第二组数据:链表长度n=

2、0,x=100,i=53)删除链表中第i个元素结点。实验测试数据基本要求:第一组数据:链表长度n10,i分别为5,n,1,n+1,0 第二组数据:链表长度n=0, i=54)在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。实验测试数据基本要求:链表元素为 (10,20,30,40,50,60,70,80,90,100),x分别为25,85,110和85)将单链表中的奇数项和偶数项结点分解开,并分别连成一个带头结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便对照求解结果。实验测试数据基本要求:第一组数据:链表元素为 (1,2,3,4,5,6,7

3、,8,9,10,20,30,40,50,60)第二组数据:链表元素为 (10,20,30,40,50,60,70,80,90,100)6)求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。实验测试数据基本要求: 第一组第一个链表元素为 (1,3,6,10,15,16,17,18,19,20)第二个链表元素为 (1,2,3,4,5,6,7,8,9,10,18,20,30)第二组第一个链表元素为 (1,3,6,10,15,16,17,18,19,20)第二个链表元素为 (2,4,5,7,8,9,12,22)第三组第一个链表元素为 ()第二个链表元素为 (1,2,3,4,5,6,

4、7,8,9,10)实验准备:1) 求第i个节点指针:先设一指针p,使其初值为头节点的下一指针及p=head.next,并设置一变量j作为记录节点的序号,利用循环先从头节点依次指向所数到的节点,循环条件要考虑到节点不存在的情况。while(j!=i&p!=NULL)p=p.next;j+;return p;2)在第i个结点前插入值为x的结点首先搜索到插入的位置,然后产生节点,将x装入,将产生的节点的后继指针指向该位置的下一节点,并将该位置前一节点后继指针指向产生的节点考虑i是否满足插入条件。while(j!=i-1&p!=NULL)p=p.next;j+;elses=new node;s.dat

5、a=x;s.next=p.next;p.next=s(指向产生的节点);3)删除链表中第i个元素结点和插入类似,明确删除的节点,将该节点前一节点后继指针指向该节点的后继指针所指节点,然后删除该节点。p指向i的前一节点u=p.next;p.next=u.next;delete u;4)在一个递增有序的链表L中插入一个值为x的元素,并保持其递增有序特性。和插入类似,先将x与表中每一元素比较,当x=L.data时,建立节点插入该节点之前。当指针为空时插入表尾。5)将单链表中的奇数项和偶数项结点分解开,并分别连成一个带头 结点的单链表,然后再将这两个新链表同时输出在屏幕上,并保留原链表的显示结果,以便

6、对照求解结果先建立两个空链表A,B,与插入类似,使p=L.next开始,当序号i为奇数插入A,否则插入B,到p=NULL;m=A.next;n=B.next;利用循环coutmn;使m,n,指向下一节点,注意m=n和m=n+1的情况6)求两个递增有序链表L1和L2中的公共元素,并以同样方式连接成链表L3。建一新表,考虑递增这一条件。设置两指针p1,p2,分别指向两表A,B.初值为A.next,B.next.1. p1.data=p2.data,则插入新表。将p1,p2后移。2. p1.datap2.data,将p2后移,继续查找。3. p1.datap2.data,将p1后移。反复执行比较,直

7、到其中一表为空结束。实验程序:#include#includetypedef int elementtype;struct Node elementtype data; Node*next; ;class list private: Node*head; Node*real; public: list(); Node*first(int i); void second(int i,elementtype x); void third(int i); void forth(elementtype x); / void fifth(list &L2,list &L3); void sixth(li

8、st &L1,list &L2); void creat(); friend ostream& operatorx; while(x!=-1) u=new Node; u-data=x; real-next=u; real=u; cinx; real-next=NULL;ostream& operatornext; while(p!=NULL) outdata; p=p-next; out ; outnext;int j; while(j!=i-1&p!=NULL) p=p-next;j+; return p;void list:second(int i,elementtype x) Node

9、*p=head;int k=0;Node*s; while(k!=i-1&p!=NULL) p=p-next;k+; if(p=NULL)cerrdata=x; s-next=p-next; p-next=s; void list:third(int i) Node*u,*p=head;int k=0; while(k!=i-1&p!=NULL) p=p-next;k+; if(p=NULL|p-next=NULL) cerrnext; p-next=u-next; delete u; void list:forth(elementtype x) Node*p=head;Node*s; whi

10、le(p!=NULL) if(xnext-data)break; p=p-next; s=new Node; s-data=x; s-next=p-next; p-next=s;void list:fifth(list &L2,list &L3) Node*u;int i=0; Node*p=head-next; for(i=0;p!=NULL;i+,p=p-next) u=new Node;u-data=p-data; if(i%2=0) L2.real-next=u;L2.real=u; else L3.real-next=u;L3.real=u; L2.real-next=NULL; L

11、3.real-next=NULL; void list:sixth(list &L1,list &L2) Node*pa,*pb,*u; pa=L1.head-next; pb=L2.head-next; while(pa!=NULL&pb!=NULL) if(pa-datadata)pa=pa-next; else if(pa-datapb-data)pb=pb-next; else u=new Node; u-data=pa-data; real-next=u; real=u; pa=pa-next; pb=pb-next; real-next=NULL; int main() list

12、L1,L2,L3; int ch;int i;elementtype x; for(;) cout数据结构实验单链表endl; cout该实验的目的是根据具体问题的需要,设计出合理的表示数据的链表结构,并设计相关算法; coutendl; cout第1题: 求链表中第i个结点的指针endl; cout第2题: 在第i个结点前插入值为x的结点endl; cout第3题: 删除链表中第i个元素结点endl; cout第4题: 在一个递增有序的链表L中插入一个值为x的元素endl; cout第5题: 将单链表中的奇数项和偶数项结点分解开endl; cout第6题: 求两个递增有序链表L1和L2中的公

13、共元素endl; cout退出程序: 0endl; coutendl; coutch; switch(ch) case 1: cout请输入数据,输入-1结束endl; L1.creat(); cout请输入结点号ii; L1.first(i); break; case 2: cout请输入数据,输入-1结束endl; L1.creat; coutL1endl; cout请输入结点号i和数据xix; L1.second(i,x); coutL1endl; break; case 3: cout请输入数据,输入-1结束endl; L1.creat(); coutL1endl; cout请输入所删

14、除结点号ii;L1.third(i); coutL1endl; break; case 4: cout请输入数据,输入-1结束endl; L1.creat(); coutL1endl; cout请输入数据xx;L1.forth(x); coutL1endl; break; case 5: cout请输入数据,输入-1结束endl; L1.creat(); coutL1endl; L1.fifth(L2,L3); coutL2endl; coutL3endl; break; case 6: cout请输入数据,输入-1结束endl; L1.creat(); L2.creat(); L3.sixth(L1,L2); coutL1endl; coutL2endl; coutL3endl; break; case 0: coutendlEXITendl; exit(1); break; default: cout输入错误,请重新选择endl; return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1