




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#两个链表的合并.课程设计目的实现对两个的链表的交叉合并,输出线形表C用直接插入排序法对C进行升序排序,生成链表D,并输出链表D。掌握对线性表的链式表示和实现,实现插入的操作。了解链表交叉合并的方法和直接插入排序法的思想,并深刻掌握算法的格式和应用。提高对数据结构的理解和应用,增强个人动手实践能力和逻辑分析能力。.设计方案论证设计思路本课程设计将对链表的交叉合并和直接插入排序的实现。首先将两个链表进行交叉合并,合并的要求如下:建立两个链表A和B,链表元素个数分别为m和n个。假设元素分别为(x1,x2,…xm),和(y1,y2,…yn)。把它们合并成一个线形表C,使得:当m>=n时,C=x1,y1,x2,y2,…xn,yn,…,xm(当口^时,C=y1,x1,y2,x2,…ym,xm,…,yn输出线形表C。对合并的链表C进行直接插入排序,输出链表D。此次课程设计实验的数据位A表(30,41,15,12,56,80)B表(23,56,78,23,12,33,79,90,55)A表(30,41,15,12,56,80,23,12,34)B表(23,56,78,23,12)|链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。通常我们把链表画成用箭头相连接的结点的序列,节点之间的箭头表示指针。在c语言中,链表用结构指针来描述。相比于线
性表顺序结构,链表比较方便插入和删除操作(1)线性表的单链表存储结构ypedefstructNode(ElemTypedata;structNode*next;}Node;typedefstructNode*Linklist(2)实现两个链表的简单合并算法如下VoidMergelist_L(Linklist&La,Linklist&Lb,Linklist&Lc){ey,[i-1].Key)){
[j+1]=[j];ey,[j].Key)T--j):\PrograiFiles\licrosoftVisualStudi :\PrograiFiles\licrosoftVisualStudi -hlxl情输入第一个链表:的入链表的长度a:情输入链表数据।123255668844117788尔刚才输入的第一个链表信息二数字二12 32EE668S44请输入第二个链表二若入链表的折度型情输入链表疑嘉■d7C语言与数C语言与数据结构[M].北京:电子工业出版社,:120-146[2]严蔚敏,吴伟民.数据结构式语言版)[M].北京:清华大学出版社,:44-52[3]严蔚敏.数据结构C语言[M].北京:清华大学出版社,:110-135}[4]谭浩强.C程序设计指导[M].北京:清华大学出版社,2005[5]潘新民,王燕芳.微型计算机控制技术[M],第2版.北京:电子工业出版社,:305-350附录:源程序#include<>#include<>#include<>#include<>#defineLsizeof(structNode)structNode//结构体longintnumber;structNode*next;structNode*create(inta)〃链表创建函数{intn;structNode*p1,*p2,*head;head=NULL;n=0;p2=p1=(structNode*)malloc(L);〃分配内存)scanf("%ld”,&p1->number);while(a)〃录入链表信息{n=n+1;if(n==1)head=p1;elsep2->next=p1;:p2=p1;p1=(structNode*)malloc(L);if(a!=1)〃分配内存scanf("%ld”,&p1->number);a--;〃控制输入的个数}p2->next=NULL;return(head);<}〃链表创建函数结束voidprint(structNode*head)//输出函数{structNode*p;p=head;printf("数字:\n");if(head!=NULL)@do//循环实现输出{printf("%ld”,p->number);printf("");p=p->next;}while(p!=NULL);printf("\n");〃链表的交叉合并算法structNode*inter_link(structNode*chainl,inta,structNode*chain2,intb){inttemp;structNode*head,*p1,*p2,*pos;/*判断a,b大小并合并*/if(a>=b){head=p1=chain1;p2=chain2;}else/*b>a*/{head=p1=chain2;p2=chain1;temp=a,a=b,b=temp;/*交换@和b*/}/*下面把p1的每个元素插在p2相应元素之前,p1长a,p2长b*/pos=head;/*此时pos指向p1中的第一个元素*/while(p2!=NULL){//漂亮,蛇形插入p1=p1->next;pos->next=p2;pos=p2;p2=p2->next;pos->next=p1;pos=p1;returnhead;}〃对合并好的链表进行排序voidInsertSort(structNode*p,int皿)//排序函数{inti,j,t;structNode*k;k=p;for(i=0;i<m-1;i++){for(j=0;j<m-i-1;j++){if(p->number>(p->next)->number){t=p->number;p->number=(p->next)->number;(p->next)->number=t;}p=p->next;p=k;}}〃主函数int皿@讪()〃皿@讪函数{structNode*p1,*p2;inta;intb;inth;printf("请输入第一个链表:\n");printf("\n输入链表的长度a:\n");(scanf("%d",&a);printf("请输入链表数据:");p1=create(a);printf("\n你刚才输入的第一个链表信息:"");print(p1);printf("\n请输入第二个链表:\n");printf("\n输入链表的长度b:\n");scanf("%d",&b);printf("请输入链表数据:");p2=create(b);printf("\n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融分析师考试动态把握与试题及答案
- 计算机辅助外语教学在初中英语教学中的个案研究
- 河北省衡水市阜城实验中学2024-2025学年高一下学期3月月考历史试题(含解析)
- 突破复习瓶颈的CFA试题及答案
- 【地理】2024届山东省滕州市高三一调试题(解析版)
- 中学英语校本教研的途径和方法
- 2024年特许金融分析师评估的试题及答案
- 特许金融分析师考试答题技巧大揭秘与试题及答案
- CFA课程复习试题及答案模板
- 视网膜静脉阻塞的护理
- 河南省鹤壁市各县区乡镇行政村村庄村名居民村民委员会明细
- 妈妈抱抱我 课件
- 电缆绝缘电阻测试记录簿表格
- 2021年丽江地区玉龙纳西族自治县人民医院医护人员招聘笔试试题及答案解析
- 天津某污水处理厂厂区建设创“海河杯”精品工程QC成果发布
- 学习的迁移课件
- 药房消防安全应急预案(通用10篇)
- 销售管理(第三版)-熊银解
- 概率论与数理统计公式整理(超全免费版)
- 灭火器检查表完美
- 华罗庚 统筹方法
评论
0/150
提交评论