




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.数 据 结 构 实 验 报 告实验题目:有序表的合并姓名: 张耀班级: 计嵌151学号: 1513052017一、 实验目的把两个有序表归并为一个有序表。二、 数据结构设计(1) 存储设计:采用带头结点的单链表存储数据。输入:数据通过键盘有序输入输出:屏幕显示两个有序表及归并后的表(2) 函数设计:CreateList(int n);/ 创建具有n个元素的线性链表ListDisplay();/输出表元素Combine(LinkList LA, LinkList LB);/归并单链表LA,LB(3) 两个有序表合并算法描述:Step1:初始化。1.1设置工作指针pa,pb,分别指向两个有序表LA,LB的首元结点。1.2生成新表LC的头结点,工作指针pc指向LC。Step2:只要pa和pb有所指,循环执行下列操作。2.1生成一新节点,链到LC表尾,pc指向它。2.2如果pa-datadata:pc-data=pa-data;pa后移。2.3否则:pc-data=pb-data;pb后移。Step3:如果pa空,把pb开始的结点依次复制到pc后。Step4: 如果pb空,把pa开始的结点依次复制到pc后。三、 算法设计与N-S图(1) 算法设计:求归并表的过程是在元素有序的情况下不断地从两表中取出元素,添加到新表中,所以元素采取表尾插入。设两个有序表SA,SB,归并后的有序表为SC,取元素的过程是:依次扫描SA,SB中的元素,比较当前元素的值,将较小的元素赋给SC,直到一个顺序有序表扫描完毕,然后将另一个顺序有序表中余下元素复制到SC中。(2) 程序流程图开始初始化:pa = LA.Head-next;pb = LB.Head-next;pc = Head;pc-data = pa-data;pa = pa-next;pc-data = pb-data;pb = pb-next;pa-datadata生成新节点,连接到LC表尾,pc指向它pa和pb都不为空把pb开始的结点依次复制到pc后面pa=NULLPb!=NULL把pa开始的结点依次复制到pc后面pb=NULLPa!=NULL结束四、 程序清单#includeusing namespace std;#includeprocess.hstruct Nodeint data;/数据域,存放表元素Node *next;/指针域,指向下一个结点;class LinkListprivate:Node *Head;/ 链表头指针public:LinkList();/构造函数, 创建空链表void CreateList(int n);/创建具有n个元素的线性链表void ListDisplay();/输出表元素void Combine(LinkList, LinkList);/合并;LinkList:LinkList()/构建函数,建一空链表Head = new Node;Head-next = NULL;void LinkList:CreateList(int n)/尾插法(正序)创建具有n个元素的线性表Node *p, *s;/设置工作指针。p指向尾结点p = Head;cout 请依次输入 n 个元素值: endl;for (int i = 1; i s-data;/输入新建数据元素值s-next = p-next;/新结点链入表尾p-next = s;p = s;void LinkList:ListDisplay()/遍历显示链表Node *p;/设置工作指针p = Head-next;/从首元结点开始遍历int i = 1;/元素位序while (p)cout data next;i+;cout next;pb = LB.Head-next;pc = Head;while (pa!= NULL&pb != NULL)Node*p =new Node;p-next= NULL;pc-next= p;pc = p;if (pa-data data)pc-data = pa-data;pa = pa-next;elsepc-data = pb-data;pb = pb-next;if (pa = NULL)while (pb != NULL)Node*p1 = new Node;p1-next = NULL;pc-next = p1;pc = p1;pc-data = pb-data;pb = pb-next;else if (pb = NULL)while (pa != NULL)Node*p2 = new Node;p2-next = NULL;pc-next = p2;pc = p2;pc-data = pa-data;pa = pa-next;void main()LinkList SA, SB, SC;int la_len, lb_len;cout la_len;cout endl;SA.CreateList(la_len);cout lb_len;cout endl;SB.CreateList(lb_len);cout SA: endl;SA.ListDisplay();cout endl;cout SB: endl;SB.ListDisplay();cout endl;SC.Combine(SA, SB);cout SC: endl;SC.ListDisplay();cout endl;五、 运行与测试1、测试数据如下:SASBSC11,22,33,441,13,17,391,11,13,17,22,33,39,44111,13,17,391,11,13,17,3911,22,33,4411,11,22,33,4411,22,33,44Void11,22,33,44Void1,13,17,391,13,17,39VoidVoidVoid551,13,17,391,13,17,39,552、运行结果如下:. 六、 实验分析及体会分析:本次实验,输入两个有序表实现了两个有序表的合并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网红面包店品牌战略规划与区域代理合作协议
- 抖音公共卫生安全信息共享与应急响应合同
- 海外医学教育注射泵租赁与维修服务合同
- 网络安全合规审查补充协议
- 机器人减速器租赁与自动化生产线集成合同
- 宠物美容服务行业品牌授权加盟合同
- 澳新市场股权合作开发与文化产业投资合同
- 短视频平台用户数据销毁及隐私保护服务合同
- 医疗设施国际输液泵租赁与操作技能培训服务协议
- 医院培训课件:《手卫生》
- 《TAVR的临床应用》课件
- 广东省深圳市2024-2025学年高一上学期期末考试英语试题(含答案)
- 成语故事-此地无银三百两-课件
- 程序员兼职协议
- 《防癌抗癌专题》课件
- (PPAP)生产件批准作业指导书
- 催收物业费的委托代理合同
- 智慧加气站综合管理平台建设方案
- 生成式AI时代下的提示素养培育研究
- 2024年高考真题-化学(天津卷) 含解析
- 2023年中铜国际贸易集团有限公司招聘笔试真题
评论
0/150
提交评论