- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构课程设计实现两个链表的合并,数据结构链表,java链表数据结构,数据结构单链表,数据结构双向链表,链表的数据结构,数据结构单链表代码,数据结构中的链表,数据结构之链表,数据结构链表ppt
一、 需求分析:
题目: 实现两个链表的合并
问题描述:
1. 建立两个链表A和B,链表元素个数分别为m和n个。
2. 假设元素分别为(x1,x2,…xm),和(y1,y2, …yn)。把它们合并成一个线形表C,使得:
当m=n时,C=x1,y1,x2,y2,…xn,yn,…,xm
当nm时,C=y1,x1,y2,x2,…ym,xm,…,yn
输出线性表C。
由题目的相关信息可以分析得到:首先我们需要建立两个链表AB,A链表的元素个数为m;B链表的元素个数为n;在将A\B链表进行合并,更具m和n的大小关系决定链表C的元素顺序;再将C经行直接插入排序得到一个新的链表D;最后输出ABCD的相关信息。
二、 算法的流程图
cmd=0 cmd=1 错误输入
正确 错误 正确 错误
三、 算法设计分析
这个两个链表的交叉合并算法主要运用到的是链表的基本操作,定义节点,将链表的创建、计算链表的长度、链表A,B的交叉组合、链表内容升序排列、删除链表指定位置元素、删除指定的元素等算法写成了独立函数,通过主函数调用。这样就大大精简了主函数的操作。但主函数中很大篇幅用到了if、else语句,用以指定链表指定结点和指定元素的删除操作,这样就使得本来很精简变得繁琐,降低了程序的质量。所以其有优点和缺点,但需要不断的改进,不断优化该程序。
四、 源代码
程序源代码:
#includestdio.h
#includestdlib.h
typedef struct node //节点定义
{
int data;
struct node *next;
} node,*linklist;
linklist creat(linklist head) //该函数用来创建链表
{
node *r,*s;
int a;
r = (linklist)malloc(sizeof(node));
head = r;
scanf(%d,a);
while(a != 0)
{
s =(node*)malloc(sizeof(node));
s-data=a;
r-next=s;
r=s;
printf(please input a data:);
scanf(%d,a);
}
r-next=NULL;
return head;
}
linklist length(linklist l) // 返回L中数据元素个数
{
int i=0;
linklist p=l-next; // p指向第一个结点
while(p)
{
i++;
p=p-next;
}
return i;
}
linklist mergel(linklist A,linklist B) //用于实现链表A,B的交叉组合
{
int m,n;
node *p,*q,*s,*t;
linklist C;
p=A-next;
q=B-next;
m=length(A);
n=length(B);
C=A;
if(mn)
{
p=B-next;
q=A-next;
C=B;
}
while(pq)
{
s=p-next;
p-next=q;
if(s)
{
t=q-next;
q-next=s;
}
p=s;
q=t;
}
return C;
}
linklist sort(linklist L) //链表内容升序排列
{
linklist p,q,min;
int temp;
p=L;
while( p=p-next )
{
q=min=p;
while(q=q-next){
if( q-datamin-data )
min = q;
}
if( min!=p )
{
temp = p-data;
p-data = min-data;
m
您可能关注的文档
最近下载
- 现代汉语(第二版)上下册黄伯荣复习与练习题答案(含思考与讨论答案).pdf
- 2024年党纪学习教育(群众纪律)党课专题.ppt VIP
- 2024安徽省继续教育公需科目试题及答案.pdf
- 阿里巴巴旗下子公司介绍.pptx
- 2023年九年级数学中考专题:旋转综合压轴题(线段问题).docx VIP
- 四川久远智能火灾报警控制器JB-TG-JF999(联动型)使用说明书.pdf
- 医疗保障核心业务区网络安全接入规范-(2).pdf
- 一例喂养不耐受早产儿的护理查房.pptx
- 2023年宜宾学院计算机科学与技术专业《数据库原理》科目期末试卷A(有答案).docx VIP
- 幼儿园新教师保教工作基本要求对照自评规范评价表格.doc
文档评论(0)