数据结构实验指导书(JAVA版)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一、单链表的基本操作

一、实验目的

1、掌握线性链表的操作特点,即指针是逻辑关系的映像。

2、掌握动态产生单链表的方法。

3、熟练掌握单链表的插入、删除操作特点,即指针赋值的先后次序。

4、熟练掌握单链表的取元素操作

二、实验内容

1、定义单链表类型并动态创建单链表;

2、实现单链表的取元素操作、插入操作和删除操作;

3、实现输出单链表中各元素值的操作;

4、将单链表中的最小元素移到最前面。

三、实验环境

eclipse环境

四、实验步骤

1、定义单链表节点类;

2、定义单链表类,并实现单链表的创建、插入、删除、取元素操作和将单链表中的最小元素移到最前面的操作;

3、从键盘上依次输入21、75、30、18、42、56,顺序或逆序创建单链表,并输出单链表中的各元素值;

5、分别在单链表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出单链表中的各元素值;

6、删除单链表中的第6个数据元素和第8个数据元素,给出删除成功或失败的信息,并输出单链表中的各元素值;

7、取单链表中的第5个数据元素和第7个数据元素;

8、将单链表中的最小元素移到最前面,并输出单链表中的各元素以检查操作是否正确实现。

五、问题讨论

1、单链表具有什么优缺点?

2、单链表的定义与顺序表的定义有什么区别?

3、逆序创建单链表有什么好处?

六、实验报告内容

1、实验目的

2、实验内容和具体要求

3、完成情况和实验记录,实验记录为实验过程中遇到的问题及解决方法

4、程序清单

5、所输入的数据及相应的运行结果

6、问题讨论回答

7、实验心得

实验二、二叉树的遍历和二叉查找树

一、实验目的

1、掌握二叉树的特点及其存储方式;

2、掌握二叉树的创建;

3、掌握二叉树前序、中序、后序遍历的基本方法及应用;

4、掌握二叉查找树的特点;

5、掌握二叉查找树查找(包含contain)、插入和删除操作的实现。

二、实验内容

1、用前序方法建立一棵二叉树;

2、实现前序、中序和后序遍历二叉树的操作;

3、实现统计二叉树叶子结点个数或计算二叉树深度的操作;

4、将输入的一组数据逐个插入实现创建二叉查找树;

5、用非递归实现二叉查找树的查找和删除操作。

三、实验环境

eclipse 环境

四、实验步骤

1、二叉链表节点类的定义;

2、二叉树类的定义;

3、建立下图所示的二叉树c

a

b e f

d 以字符串的形式“根左右”定义一棵二叉树时,写出创建二叉树的操作:

4、编程实现以上二叉树的前序、中序和后序遍历操作,输出遍历序列;

5、完成统计以上二叉树中叶子结点的个数或计算以上二叉树的深度;

6、定义二叉查找树类;实现二叉查找树的查找、插入和删除操作;

7、从键盘上输入六个整数45、24、53、12、37、9构造二叉查找树,输出二叉查找树的中序遍历结果;

8、在二叉查找树上查找37和50,并输出能否查找成功;

9、删除数据元素24和53,输出其中序遍历结果。

五、问题讨论

1、先序、中序、后序遍历二叉树的区别?

2、在先序、中序非递归算法中为什么使用栈?能不能借助其它数据结构来实现?

3、二叉查找树中序遍历结果有什么特点?

4、在二叉查找树中插入一个新结点,总是插入到叶结点下面吗?

5、在任意一棵非空二叉查找树中,删除某结点后又将其插入,则所得二叉查找树与原二叉查找树相同吗?

六、实验报告内容

1、实验目的

2、实验内容和具体要求

3、完成情况和实验记录,实验记录为实验过程中遇到的问题及解决方法

4、程序清单

5、所输入的数据及相应的运行结果

6、问题讨论回答

7、实验心得

实验三、内部排序

一、实验目的

1、理解排序的有关概念和特点。

2、熟练掌握直接插入排序、希尔排序、快速排序、堆排序、归并排序算法的基本思想。

3、关键字序列有序与无序,对于不同的排序方法有不同的影响,通过该实验进一步加深理解。

二、实验内容

输入一组数据,然后用直接插入排序、希尔排序、快速排序、堆排序、归并排序算法进行排序。

三、实验环境

eclipse环境

四、实验步骤

1、实现直接插入排序、希尔排序、快速排序、堆排序、归并排序算法;要求输出各种排序算法每一趟排序的结果;

2、从键盘输入8个整数{12,45,21,12,30,2,68,33},存放在数组quick[8]中,调用各种排序算法,观察每一趟排序结果次序的变化;

3、如果上述8个整数按照升序输入,即k1={2,12,12,21,30,33, 45,68},输出各种排序算法每一趟排序的结果,观察关键字次序的变化;

4、如果上述8个整数按照降序输入,即k2={68,45,33,30,21,12, 12,2},输出各种排序算法每一趟排序的结果,观察关键字次序的变化;

5、随机产生3万个数,对其进行排序,观察其结果,并测试各排序算法的执行时间,比较执行效率。

五、问题讨论

1、直接插入排序、希尔排序、快速排序、堆排序、归并排序中哪些是稳定的排序方法,哪些是不稳定的?

2、直接插入排序、希尔排序、快速排序、堆排序、归并排序中哪些排序方

相关文档
最新文档