已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数 据 结 构 实 验 报 告实验题目:有序表的合并姓名: 张耀班级: 计嵌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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 6346.23-2025电子设备用固定电容器第23部分:分规范表面安装金属化聚萘二甲酸乙二醇酯膜介质直流固定电容器
- 河北省保定市定州市2025-2026学年三年级上学期期末质量监测数学试卷(含答案)
- 2025-2026学年宁夏固原市隆德二中八年级(上)期末数学试卷(含部分答案)
- 五年级试卷及答案
- 网络布线题目及答案
- 2021-2022年人教部编版语文三年级上册第六单元测无纸试卷完整版
- 2020大学生银行顶岗实习总结【三篇】
- 云南省玉溪市2025-2026学年八年级上学期1月期末物理试题(原卷版+解析版)
- 初中历史知识课件
- 手足口病的考试及答案
- 物流铁路专用线工程节能评估报告
- 2026天津市南开区卫生健康系统招聘事业单位60人(含高层次人才)备考核心试题附答案解析
- 重睑手术知情同意书
- 46566-2025温室气体管理体系管理手册及全套程序文件
- 九师联盟2026届高三上学期12月联考英语(第4次质量检测)(含答案)
- 第21章 反比例函数(单元测试·综合卷)(含答案)-沪科版(2024)九上
- 2025年秋青岛版(五四学制)小学数学五年级上册(全册)知识点梳理归纳
- 箱包工厂合作合同范本
- 2026年张家界航空工业职业技术学院单招职业倾向性考试必刷测试卷必考题
- 【语文】陕西省西安市高新一小小学一年级上册期末试卷
- 江苏省南京市联合体2026届数学七年级第一学期期末学业水平测试试题含解析
评论
0/150
提交评论