数据结构单链表操作实验报告Word文档下载推荐.docx
- 文档编号:19764402
- 上传时间:2023-01-09
- 格式:DOCX
- 页数:9
- 大小:42.14KB
数据结构单链表操作实验报告Word文档下载推荐.docx
《数据结构单链表操作实验报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据结构单链表操作实验报告Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。
2.再从键盘输入顺序任意的5个整数,按有序插入的要求生成第二个有序单链表,将该
3.将这两个有序单链表合并成一个有序单链表,要求使用两个单链表的原有空间进行合
并,将生成的有序单链表输出显示。
程序中使用的数据结构及符号说明
表示结点类
表示单链表类
表示构造函数
表示析构函数
表示排序函数
表示输入函数
表示输出函数
表示返回头结点
表示合并链表
classNode
classLinkList
LinkList();
~LinkList();
voidSort();
voidInput();
voidOutput();
Node*Gethead();
voidadd(LinkList&
d);
主流程图
输入函数流程图
输出函数流程图
合并函数流程图
.程序主要模块的功能说明
1)输入函数voidInput();
Node*p=Gethead();
for(inti=1;
i<
=5;
i++)
p->
next=newNode;
p=p->
next;
cin>
>
p->
date;
cout<
<
endl;
}
先将头节点赋值给p,然后进入for循环,依次执行定义一个新的节点,newNode将它
赋值给p结点指针指向的下一个结点p->
next,再将p结点指针指向的下一个结点p->
next
赋值给p结点。
然后依次输入,结点指针的数据。
进而实现了将需要输入的数据存储到单
链表中。
(2)输出函数voidOutput();
{
"
排序后的整数为"
<
Node*p=Gethead()->
while(p!
=NULL)
date<
;
将头结点指针指向的下一个结点赋值给p指针,进入while判断,当结点不为空的时候,cout
屏幕输出结点数据。
再将p指针指向的下一个结点赋值给p,直到退出while。
这个函数实
现了将数据输出到屏幕。
(3)排序函数voidSort();
Node*p1=Gethead()->
Node*p2=p1->
ints=0;
Node*p=p1;
=4;
p=p1;
p2=p1->
for(intj=1;
j<
=5-i;
j++)
if(p->
date>
p2->
date)
p=p2;
p2=p2->
s=p1->
p1->
date=p->
date=s;
p1=p1->
首先设置两个指针p1,p2,其中p1指向链表头结点的下一个结点,p2指向p1的下一个结
点。
设置一个指针p,将p1的地址赋给p,比较p指针和p2指针所指向的值,若指针P所
指向的值大于指针p2所指向的值,则调换两者的值;
若小于则进行下一轮比较,直到所有
数据都比完为止。
这个函数实现了将输入的数据进行排序。
(4)合并函数voidadd(LinkList&
d)
Node*p2=d.Gethead()->
Node*p,*q;
q=Gethead();
while(p2!
=NULL){
if((p1==NULL)||(p2->
date)<
=(p1->
date)){
p=newNode;
date=p2->
next=p1;
q->
next=p;
q=p;
}else
q=q->
要将两个单链表中的数据合并,并按顺序从小到大输出。
在原有链表的空间,将两个单链表
中的数据依次进行插入操作。
五.程序运行时的初值和运行结果
【测试数据】
输入第一组整数:
2345117834
输出的有序单链表应为:
11,23,34,45,78
输入第二组整数:
9013456610
10,13,45,66,90
合并两个单链表,输出合并后的结果应为:
10,11,13,23,34,45,45,66,78,90
六.收获及体会
在这次的数据结构实验中,我尝试进行了单链表的创建、查找、插入和合并等运算,
将课堂中,课本里面学到的相关知识进行了实践,但是毕竟纸上得来终觉浅,在实验过程中
发现了知识的漏洞,而且发现了自己对于C++中的模板这一块的知识掌握不到位,甚至可以
说很欠缺,所以在这一次的实验中,我没有采用类模板,而是直接运用了类的相关知识,我
想我接下来应该在课下好好补一补模板的相关知识。
七.源程序
#include<
iostream>
usingnamespacestd;
classNode//定义结点类
{public:
intdate;
Node*next;
Node();
~Node();
};
Node:
:
Node()
{next=NULL;
}Node:
~Node()
{}
classLinkList//定义链表类
//构造函数
//析构函数
//输入函数
//输出函数
//排序函数
//返回头结点
//合并链表
private:
Node*head;
LinkList:
~LinkList()
voidLinkList:
Input()//输入函数
请输入五个整数"
for(inti=1;
i++){
while(p!
;
Sort()//排序函数
for(intj=1;
j++){
Node*LinkList:
Gethead()
returnhead;
add(LinkList&
d)//合并函数
while(p2!
q->
q=p;
}else{
}}
voidmain()
LinkLista,b;
a.Input();
a.Output();
b.Input();
b.Output();
a.add(b);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 单链表 操作 实验 报告