【数据结构】 实验报告07 线性表的合并

这篇实验报告探讨了如何将两个线性表合并成有序表,涉及数组和链表两种存储方式。实验中,先合并再排序和先排序再合并的方法被比较,分析了它们的时间复杂度。报告指出,链表在删除和插入操作上的优势,而数组在直接访问元素上的高效。第二种排序方法(先排序再合并)的时间复杂度在最坏情况下仍优于第一种(合并后排序)。
摘要由CSDN通过智能技术生成

一、实验目的和要求

目的:两个表合并成一个有序表。要求设计两种以上储存方式、两种以上处理流程方式。分析各代码性能。

要求:

  1. 抽象数据类型独立实现。
  2. 其它要求同作业-01要求。

二、实验环境

软件环境:
visual stdio 2017

硬件环境:
①CPU:Intel(R)Core(TM)i7-8565U CPU @1.80Ghz
②内存:8.0GB

三、实验内容

设计2种不同存储方式的线性表,对于每种线性表,随机给定2个表,用2种方式合并成为一个有序表(一种是先合并再排序,一种是先排序再合并)。

四、实验过程

4.1 任务定义和问题分析

解决该问题的关键在于如何自行定义一个线性表,剩下的合并的核心操作只在于排序。

4.2 数据结构的选择和概要设计

第一种存储结构:数组

第二种存储结构:链表

第一种合并方法:创建一个空表,依次将两个表中元素加入其中,最后进行由小到大排序

第二种合并方法:先将2个表排序,再通过比较,每次取其中最小的元素加入到空表中,直到元素取完,这就类似于归并排序的操作。

4.3 详细设计

线性表定义成一个模板类,其私有成员为T a【100】Node<T>*front,rear) 以及长度int length

公有成员为每种表对应的构造函数(以链表为存储结构的线性表多写一个析构函数),int getlength()void push(T element);void insert(int index,T element),void pop()void deleteelement(int index)
这些函数在传入数据不合法和表为空删除元素时,会触发cstlib中的exit()函数,使程序终止。

最后是定义一个运算符重载函数 T & operator [](int index),用来返回线性表中第index个元素,这里需要注意的是返回值需要引用返回,否则无法进行后续的根据索引进行排序。

五、测试及结果分析

5.1 实验数据

为保证数据中有重复,且直接合并后不是有序,选取的数据为

线性表1 线性表2 合并之后的表
1,3,5 0,2,4,6,8,5 0,1,2,3,4,5,5,6,8
1,3,7,5 0,2,4,6,8,5,3 0,1,2,3,3,4,5,5,6,7

5.2 结果及分析

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值