- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
线性表链式结构插入算法
实验一 《线性表结构
实验题目:线性表的操作
实验目的:1.掌握上机调试线性表的基本方法;
2.掌握线性表的一些基本操作;
实验内容:将两个有序链表合并为一个有序链表
一、需求分析
1.实验程序中先创建两个有序链表,演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入相应数据
2.将两个链表合并时可按数据从大到小或从小到大合并,用户根据提示可选择一种排序方式。
3.程序执行命令包括:
(1)构造链表;(2)输入数据;(3)合并两个链表,根据用户需求选择一种排序方式;(4)将合并结果输出;(5)结束
4.测试数据:
链表1数据为:2,4,6,7,10
链表2数据为:1,3,5,6,7,12
按从小到达合并为:1,2,3,4,5,6,6,7,7,10,12;
按从大到小合并为:12,10,7,7,6,6,5,4,3,2,1;
二、概要设计
1.基本操作
Linklist creat()
操作结果:构造一个链表,并输入数据,返回头节点指针。
void print(Linklist head)
初始条件:链表已存在;
操作结果:将链表输出。
void MergeList_1(Linklist La,Linklist Lb)
初始条件:有序线性链表La和Lb已存在;
操作结果:将La和Lb两个链表按从小到大的顺序合并。
void MergeList_2(Linklist La,Linklist Lb)
初始条件:有序线性链表La和Lb已存在;
操作结果:将La和Lb两个链表按从大到小的顺序合并。
2.本程序包括四个模块:
(1)主程序模块;
(2)链表数据输入模块;
(3)链表合并模块;
(4)链表输出模块;
三、详细设计
1.元素类型,节点类型,指针类型
typedef struct LNode //定义节点
{
int data;
struct LNode *next;
}LNode,* Linklist;
2.每个模块的分析
(1)主函数模块
int main()
{
Linklist head1,head2;
int i;
printf(请输入链表1数据(由小到大,输入0表示输入结束):\n);
head1=creat(); //创建链表1,将头结点指针返回为head1
printf(请输入链表2数据(由小到大,输入0表示输入结束):\n);
head2=creat();
printf(请选择排序方式(输入1则从小到达合并,输入其它整数则按从大到小合并):);
scanf(%d,i); //创建链表2,将头结点指针返回为head2
if(i==1) //选择两种排序方式,如果输入1,则合并后按从小到大输出;输入其它数,合成链表按从大到小输出
{
printf(按小到大将两表合并得:\n);
MergeList1(head1,head2); //将创建好的两表的头结点地址head1,head2作为函数参数
}
else
{ printf(按从大到小将两表合并得:\n);
MergeList2(head1,head2); //将创建好的两表的头结点地址head1,head2作为函数参数
}
return 0;
}
(2)数据输入创建链表模块
Linklist creat() //创建链表函数,并将创建链表的头结点指针返回
{
Linklist head,p,s;
int z=1,x;
head=(LNode *) malloc(sizeof(LNode));
p=head;
while(z)
{
scanf(%d,x);
if(x!=0) //输入0表示链表数据输入结束
{
s=(LNode *)malloc(sizeof(LNode));
s-data=x;
p-next=s;
s-next=NULL;
p=s;
}
else
z=0;
}
return(head);
}
(3)合并链表模块,两个函数分别表示两种排序方式,将链表合并后直接在函数中调用链表输出函数void print(Linklist head)将链表输出
void MergeList_1(Linklist La,Linklist Lb)
//已知链表La和Lb元素都按从小到大排列,将La和Lb合并成新链表,其中元素也按从小到大排列
{
Linklist pa,pb,p
您可能关注的文档
最近下载
- 老友记台词剧本第一季第1集中英双语左右对照.pdf VIP
- 2025年5月18日河南省事业单位联考《公共基础知识》试题及答案解析.pdf
- 2018年最新发布的ISO50001-2018能源管理体系标准条款中英文版..pdf VIP
- 中欧班列“齐鲁号”跨境物流供应链金融模式研究.pdf VIP
- 运动心理学PPT完整全套教学课件.pptx VIP
- 七年级历史数字故事——隋朝大运河课件.ppt VIP
- 旅游职业礼仪-全套PPT课件.pptx
- 2025人教版数学三年级上册全册教学课件.ppt
- 居民健康档案知识培训课件.pptx VIP
- 2025年秋季人教版7年级上册数学全册教学课件(新教材).pptx
文档评论(0)