数据结构实验报告一
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
(实验名称)
1.实验目标
熟练掌握线性表的顺序存储结构和链式存储结构。
熟练掌握顺序表和链表的有关算法设计。
根据具体问题的需要,设计出合理的表示数据的顺序和链式结构,并设计相关算法。
2.实验内容和要求
内容:
<1>在第i个结点前插入值为x的结点。
实验测试数据基本要求:
第一组数据:线性表长度n≥10,x=100, i分别为5,n,n+1,0,1,n+2
第二组数据:线性表长度n=0,x=100,i=5
<2>删除线性表中第i个元素结点。
实验测试数据基本要求:
第一组数据:线性表长度n≥10,i分别为5,n,1,n+1,0
第二组数据:线性表长度n=0, i=5
<3>在一个递增有序的线性表L中插入一个值为x的元素,并保持其递增有
序特性。
实验测试数据基本要求:
线性表元素为(10,20,30,40,50,60,70,80,90,100),
x分别为25,85,110和8
<4>求两个递增有序线性表L1和L2中的公共元素,放入新的顺序表L3中。
实验测试数据基本要求:
第一组
第一个线性表元素为(1,3,6,10,15,16,17,18,19,20)
第二个线性表元素为(1,2,3,4,5,6,7,8,9,10,18,20,30)第二组
第一个线性表元素为(1,3,6,10,15,16,17,18,19,20)
第二个线性表元素为(2,4,5,7,8,9,12,22)
第三组
第一个线性表元素为()
第二个线性表元素为(1,2,3,4,5,6,7,8,9,10)
要求:每个题目分别用顺序存储和链式存储实现;
实验程序有较好可读性,各运算和变量的命名直观易懂,符合软件工程要求;
程序有适当的注释。
3.数据结构设计
顺序表结构,链表结构。
4.算法设计
(除书上给出的基本运算(这部分不必给出设计思想),其它实验内容要给出算法设计思想)
按顺序插入:首先插入一个元素,表长加一,用do,while循环整个顺序表,从最后一位开始,比x大的都向后移一位,在第一个小于x的后面停止遍历,吧x插在比x小的第一个数的后面。
寻找两个顺序表中相同的元素:运用嵌套循环,最外层循环遍历第一个表里面的元素为母元素,内部循环遍历第二个表为子元素。在子元素中查找与母元素相同的元素,改变第一个表里面的元素,把相同的放进去,最后删除表一中除了新放进来的元素。
5.运行和测试
顺序表:
1:
2:
3:
4:
链表:1:
2:
3:
4:
6.总结和心得
(这部分是重点,要认真写)
线性表(linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串,线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。
顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
链表
链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。
链表的结构非常多样,以下情况组合起来就有8种链表结构:
单向、双向
带头、不带头
循环、非循环
常用链表:无头单向非循环链表:结构简单,一般不会单独用来存数据。实际中更多是作为其他数据结构的子结构,如哈希桶、图的邻接表等等。另外这种结构在笔试面试中出现很多。带头循环单链表:结构较无头单向非循环链表简单。实际操作当中使用较少。不带头双向循环链表:在Java的集合框架库中LinkedList底层实现就是不带头双向循环链表。
顺序表存储位置是相邻连续的,可以随即访问的一种数据结构,一个顺序表在使用前必须指定起长度,一旦分配内存,则在使用中不可以动态的更改。
他的优点是访问数据是比较方便,可以随即的访问表中的任何一个数据,缺点是定义的长度不可更改造成存储空间的浪费。链表是通过指针来描述元素关
系的一种数据结构,他可以是物理地址不连续的物理空间。不能随即访问链表元素,必须从表头开始,一步一步搜索元素。它的优点是:对于数组,可以动态的改变数据的长度,分配物理空间。在使用中如果一个数组在使用中,查询比较多,而插入,删除数据比较少,数组的长度不变时,选顺序表比较合理。如果插入,删除,长度不定的数组,可以选链表。
[7. 附录]
(源代码清单。纸质报告不做要求。电子报告,可直接附源文件,删除编译生成的所有文件)
seqList.h way.cpp线性表.cpp