山大数据结构实验报告

山东大学软件学院

《数据结构、算法与应用》实验指导书

一、实验要求

采用良好的编程风格;关键操作要有注释。

程序能够运行,显示运行结果。

二、 开发工具

  Microsoft Visual C++

Eclipse IDE For C++

扫描二维码关注公众号,回复: 3664504 查看本文章

三、 实验题目

实验一 递归练习

一、实验目的

熟悉开发工具的使用。

掌握递归的实现思想。

二、实验内容

1、输出n个整数的全排列。

2、输出n个整数的所有子集。

实验二 排序算法

一、实验目的

掌握各种排序方法的实现思想。

实验内容

1、创建排序类。

2、提供操作:选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序。

3、*能够显示各种排序算法的中间过程。

实验三 线性表操作

实验目的

掌握线性表的基本操作:插入、删除、查找。

掌握链表遍历器的使用方法。

二、实验内容

创建线性表类。线性表的存储结构使用链表。

提供操作:自表首插入元素、删除指定元素、搜索表中是否有指定元素、输出链表。

接收键盘录入的一系列整数(例10,25,8,33,60)作为节点的元素值,创建链表。输出链表内容。

输入一个整数(例33),在链表中进行搜索,输出其在链表中的位置。如果不存在输出0。

使用链表遍历器实现链表的反序输出。

创建两个有序链表,使用链表遍历器实现链表的合并。

实验四 矩阵和散列表

一、实验目的

掌握矩阵结构。

掌握散列表及其应用。

二、实验内容

1、创建稀疏矩阵类,采用行主顺序把稀疏矩阵映射到一维数组中,实现稀疏矩阵的转置和两个稀疏矩阵的加法操作。

2、使用散列表设计实现一个字典,假设关键字为整数且D为961,在字典中插入随机产生的500个不同的整数,实现字典的建立和搜索操作。分别使用线性开型寻址和链表散列解决溢出。

实验五 堆栈和队列的应用

一、实验目的

掌握堆栈和队列的使用。

二、实验内容

1、计算数学表达式的值。 

输入数学表达式,输出表达式的计算结果。数学表达式由单个数字和运算符“+”、“-”、“*”、“/”、“(、“)构成,例如 2 + 3 * ( 4 + 5 ) – 6 / 4。假定表达式输入格式合法。

2、以一个 m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。

   迷宫根据一个迷宫数据文件建立。迷宫数据文件由一个包含0、1的矩阵组成。迷宫的通路可以使用通路上各点的坐标序列进行展示(使用图形展示最佳)。

实验六 二叉树操作

一、实验目的

1、掌握二叉树的基本概念,链表描述方法;遍历方法。

二、实验内容

创建二叉树类。二叉树的存储结构使用链表。提供操作:前序遍历、中序遍历、后序遍历、层次遍历、计算二叉树结点数目、计算二叉树高度。对建立好的二叉树,执行上述各操作。

接收键盘录入的二叉树前序序列和中序序列(各元素各不相同),输出该二叉树的后序序列。

3、二叉搜索树的构造以及二叉搜索树输出。

实验七 堆及其应用

一、实验目的

1、掌握堆的基本概念,插入、删除方法。掌握堆排序。

二、实验内容

1、创建最大堆类。最大堆的存储结构使用链表。提供操作:堆的插入、堆的删除。堆的初始化。

2、接收键盘录入的一系列整数,输出其对应的最大堆、

3、堆排序。

*4、Huffman树的构造。Huffman编码。

实验八 图的操作

一、实验目的

1、掌握图的基本概念,描述方法;遍历方法。

二、实验内容

1、创建图类。二叉树的存储结构使用邻接矩阵或链表。提供操作:遍历、BFS、DFS

2、对建立好的图,执行上述各操作。

3、输出生成树。

*4、输出最小生成树。

猜你喜欢

转载自blog.csdn.net/qq_41022936/article/details/83105542