- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合并单链表==数据结构实训报告
《数据结构》实训报告
院系_____软件学院________ 专业 _____软件工程______
姓名_____朱勇_______ 学号__2010118131____
___10_____级 ___2____班 _2013-5-24___
1.实训题目
假设两个元素值递增有序的单链表La和Lb。编写算法实现将表La和Lb合并成一个元素值递减有序的单链表Lc,并要求利用原表结点空间。
2.需求分析
要求用VC编写一个演示程序,首先建立一个带头结点的整型单链表,然后把第一个和最后一个互换位置。
初始化单链表功能
单链表头结点next域为NULL
建立单链表功能
使用尾插法建立单链表。
便利单链表功能
输出单链表内的所有节点的值
合并单链表功能
把关于两个单链表合并为一个新的单链表
3.概要设计
为了实现上述程序功能,需要定义一个简化的线性表抽象数据类型:
数据结构:
typedef struct Node{
int elem;
struct Node * next;
}Node,*LinkList;
基本操作:
InitLinkList(LinkList *L)
操作前提:L是一个未初始化的线性表
操作结果:将L初始化为一个空的线性表
CreateFromTail(LinkList *L)
操作前提:L是一个已初始化的空表
操作结果:建立一个非空的线性表L
ForeachLinkList(LinkList *L)
操作前提:线性表L已存在
操作结果:输出线性表L的所有节点值
LinkList* MergeLinkList(LinkList *LA, LinkList *LB)
操作前提:线性表LA,LB已存在
操作结果:两个单链表合并为一个升序单链表
本程序包含6个函数:
主函数main()
初始化单链表函数InitLinkList()
尾插法建立单链CreateFromTail ()
插入元素函数ForeachLinkList ()
合并单链表函数LinkList* MergeLinkList( ()
各函数间调用关系如下:
采用单链表实现概要设计中定义的抽象数据类型,有关的数据类型和伪码算法定义如下:
4.附录
#includestdio.h
#includemalloc.h
typedef struct Node{
int elem;
struct Node * next;
}Node,*LinkList;
void InitLinkList(LinkList *L){
*L = (Node*)malloc(sizeof(Node));
(*L)-next = NULL;
}
//尾插法建单链表
void CreateFromTail(LinkList *L){
int num;
scanf(%d,num);
Node *s, *r;
r=(*L);
while(num != -1){
s=(Node*)malloc(sizeof(Node));
s-elem = num;
r-next = s;
r = s;
scanf(%d,num);
}
r-next = NULL;
}
void ForeachLinkList(LinkList *L){
Node * temp = (*L)-next;
while( temp!= NULL)
{
printf(%d ,temp-elem);
temp = temp-next;
}
}
LinkList* MergeLinkList(LinkList *LA, LinkList *LB){
Node *pa = (*LA)-next;
Node *pb = (*LB)-next;
//新建单链表LC,并初始化
LinkList *LC = new LinkList();
InitLinkList(LC);
Node *r = (*LC); //指向LC的下一个节点
while(pa != NULL pb !=NULL)
{
if( pa-elem = pb-elem)
{
r-next = pa;
r = pa;
pa = pa -next;
}else{
r-next = pb;
r = pb;
pb = pb -next;
}
}
if(pa == NULL )
r-next = pb;
else
r-next = pa;
fr
您可能关注的文档
最近下载
- 草牧场转让合同5篇.docx VIP
- (四级)保育师理论学习考试题库(浓缩300题).docx VIP
- 2025四级保育师资格考试题库及答案(浓缩400题).docx VIP
- 实施指南《GB_T10068-2020轴中心高为56mm及以上电机的机械振动振动的测量、评定及限值》实施指南.docx VIP
- 中小学生常见病防治课件.pptx VIP
- 1.1 原始社会的解体和阶级社会的演进:原始社会 课件-【新教材】高中政治统编版(2019)必修一(共29张PPT).pptx VIP
- 铝方通吊顶施工技术交底.pptx VIP
- DB23T1501-2013 水利堤(岸)坡防护工程格宾与雷诺护垫施工技术规范.pdf VIP
- 华为极简站点解决方案opm200.pdf VIP
- 北师大版七年级数学下册第二章测试题及答案下载.doc VIP
文档评论(0)