数据结构实验指导书(2015版)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法
实
验
指
导
书
计算机科学与信息工程学院数据结构与算法课程组编写
实验一:线性表
1.实验目的要求
本次实验的目的掌握顺序表的存储结构形式及其描述和基本运算的实现;掌握动态链表结构及相关算法设计
实验要求:输入和验证程序例题。正确调试程序,记录程序运行结果。完成实验报告。
2.实验主要内容
2.1 实现顺序表的创建、插入、删除和输出功能。
2.2线性表的单链表设计以及各种基本操作的实现。
2.3 实现两个有序单链表的合并。
3.实验步骤
3.1实验步骤
●建立main函数。
●输入42页线性表SeqList的定义和相关的常量定义。
●输入调试算法2.2 InsList 方法,为顺序表插入元素。
●在main函数中调用InsList为顺序表插入多个数据。
●编写线性表输出函数,通过循环依次输出SqList中的各个
元素的内容。
●输入调试算法2.3,删除元素(在删除元素方法前后分别
输出顺序表,观察删除结果是否正确)。
3.2实验步骤
●建立main函数。
●输入48页链表LinkList和结点Node的定义。
●实现算法2.5,初始化单链表。
●实现算法2.6 或2.7 ,初始化链表数据。
●编写链表表输出函数,通过While循环依次输出LinkList
中的各个元素的内容。输出刚创建的链表。
●实现算法2.8,获得第i个数据元素
●实现算法2.11,在链表中插入数据元素,可通过输入链表
检查结果。
●实现算法2.12,在链表中删除元素,可通过输入链表检查
结果。
实验二:栈和队列
1.实验目的要求
本次实验的目的在于使学生深入了解栈和队列的特征,掌握在实际问题背景下的灵活运用。
实验要求,正确调试本程序,记录输出结果。完成实验报告。2.实验主要内容
2.1 用顺序结构表示栈并实现栈的各种基本操作
2.2 使用栈检查括号匹配的检验
2.3采用链式结构表示队列并实现各种基本操作实现(选做)。3.实验步骤
3.1实验步骤
●建立main函数
●按80页录入SeqStack类型定义和相关常量定义。
●录入并调试方法InitStack、GetTop、Push、Pop方法
●编写方法输出栈中元素内容
●调用方法,出栈入栈若干元素,通过输出栈内容,观察栈
内容变化
3.2实验思路
●栈操作为字符,因此需要将StackElemType定义为char
●循环:录入并调试算法3.12
3.3实验步骤
●录入85页链队列定义
●实现85页算法3.8,3.9。
●实现输出队列内元素方法
●入队列、出队列若干数据,观察队列内容变化
实验三:树的应用
1.实验目的要求
通过本实验使学生深刻理解二叉树的性质和存储结构,熟练掌握二叉树的遍历算法。认识哈夫曼树、哈夫曼编码的作用和意义。
实验要求:建一个二叉树并按照前序、中序、后序三种方法遍历此二叉树,正确调试本程序。
能够建立一个哈夫曼树,并输出哈夫曼编码,正确调程序。写出
实验报告。
2.实验主要内容
2.1 对二叉树进行先序、中序、后序递归遍历,中序非递归遍历。
2.2 根据已知的字符及其权值,建立哈夫曼树,并输出哈夫曼编码。3.实验步骤
3.1实验步骤
●输入二叉链表的定义
●录入调试算法6.7,实现二叉树的构造函数
●编写二叉树打印函数,可以通过递归算法将二叉树输出为
广义表的形式,以方便观察树的结构。
●录入和调试算法6.1、6.2、6.3,实现二叉树的前序、中
序和后序的递归遍历算法。为简化编程,可以将visit函
数直接使用printf函数输出结点内容来代替。
3.2 实验步骤
●输入哈夫曼树类型定义
●录入和调试算法6.19、算法6.20,获得哈夫曼编码
实验四:图及图的应用
1.实验目的要求
理解图的基本概念,两种主要的存储结构。掌握在邻接链表存储结构下的图的深度优先递归遍历、广度优先遍历。通过选做题"最短路径问题"认识图及其算法具有广泛的应用意义。
实验要求:正确调试程序。写出实验报告。
2.实验主要内容
2.1 在邻接矩阵存储结构下的图的深度优先递归遍历、广度优先遍历。
2.2 拓扑排序,求图的拓扑序列
3.实验步骤
3.1 实验步骤
要完成图的两种遍历算法,首先需要进行图的数据初始化。为把时间主要花在遍历算法的实现上,图的初始化采用结构体声明时初始化的方法。示例代码如下:
#include "stdio.h"
typedef int Arcell;
typedef int AdjMatrix[5][5];
typedef struct {
char vexs[5];
AdjMatrix arcs;
int vexnum,arcnum;
}MGraph;
void main(){
MGraph g={
{'a','b','c','d','e'},
{{0,1,0,1,0},