朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(6)

2019-02-15 18:35

实验06 哈夫曼编码

实验学时:4学时 实验类型:综合型实验

背景知识:二叉树的应用、哈夫曼树。 目的要求:

掌握哈夫曼树和哈夫曼编码的基本思想和算法的程序实现。

实验内容:

(1)修理牧场:农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数Li个长度单位,于是他购买了一条很长的、能锯成N块的木头,即该木头的长度是Li的总和。

但是农夫自己没有锯子,请人锯木头的酬金跟这段木头的长度成正比。为简单起见,不妨就设酬金等于所锯木头的长度。例如,要将长度为20的木头锯成长度为8、7和5的三段,第一次锯木头花费20,将木头锯成12和8;第二次锯木头花费12,将长度为12的木头锯成7和5,总花费为32。如果第一次将木头锯成15和5,则第二次锯木头花费15,总花费为35(大于32)。

请编写程序帮助农夫计算将木头锯成N块的最少花费。

首先输入一个正整数N(N≤104),表示要将木头锯成N块。接着给出N个正整数Li(Li≤50),表示每段木块的长度。输出一个整数,即将木头锯成N块的最少花费。 例如: 输入:

8

4 5 1 2 1 3 1 1 输出:

49

*(2)压缩软件:

给定一篇文章,只含有英文大小写字母和空格,以.txt格式存储,统计该文件中各种字符的频率,对各字符进行Huffman编码,将该文件翻译成Huffman编码文件,再将Huffman编码文件翻译成源文件。

实验说明:

1.参考类型定义 //双亲孩子表示法 typedef struct {

26

unsigned int weight;

unsigned int parent, lchild, rchild;

} HTNode, *HuffmanTree; //动态分配数组存储哈夫曼树 typedef char * * HuffmanCode; //动态分配数组存储哈夫曼编码表

注意问题:

1.递归算法的灵活应用。 2.多级指针的使用。

27

实验07 图的两种存储和遍历

实验学时:2学时 实验类型:上机

背景知识:图的存储、遍历及其应用。 目的要求:

1.掌握图的存储思想及其存储实现。

2.掌握图的深度、广度优先遍历算法思想及其程序实现。

实验内容:

(1) 键盘输入数据,分别建立一个有向图和一个无向图的邻接表。 (2) 输出该邻接表。

(3) 在有向图的邻接表的基础上计算各顶点的度,并输出。 (4) 采用邻接表存储实现无向图的深度优先遍历。 (5) 采用邻接表存储实现无向图的广度优先遍历。 (6) 在主函数中设计一个简单的菜单,分别调试上述算法。 (7) *综合训练

地下迷宫探索:假设有一个地下通道迷宫,它的通道都是直的,而通道所有交叉点(包括通道的端点)上都有一盏灯和一个开关。请问你如何从某个起点开始在迷宫中点亮所有的灯并回到起点?

输入格式:

输入第一行给出三个正整数,分别表示地下迷宫的节点数N(1

若可以点亮所有节点的灯,则输出从S开始并以S结束的包含所有节点的序列,序列中相邻的节点一定有边(通道);否则虽然不能点亮所有节点的灯,但还是输出点亮部分灯的节点

28

序列,最后输出0,此时表示迷宫不是连通图。

由于深度优先遍历的节点序列是不唯一的,为了使得输出具有唯一的结果,我们约定以节点小编号优先的次序访问(点灯)。在点亮所有可以点亮的灯后,以原路返回的方式回到起点。 输入样例:

6 8 1 1 2 2 3 3 4 4 5 5 6 6 4 3 6 1 5 输出样例:

1 2 3 4 5 6 5 4 3 2 1

实验说明:

1.类型定义(邻接表存储)

#define MAX_VERTEX_NUM 20 //顶点最大个数 typedef struct ArcNode{ int adjvex; struct ArcNode *nextarc;

int weight; //边的权值 }ArcNode; //表结点

#define VertexType int //顶点元素类型 typedef struct VNode{ VertexType data; ArcNode *firstarc;

}VNode, AdjList[MAX_VERTEX_NUM]; // typedef struct{

AdjList vertices;

int vexnum, arcnum; //顶点的实际数,边的实际数 int kind; }ALGraph;

2.上述类型定义可以根据实际情况适当调整。 3.算法4、5分别利用栈、队列实现非递归算法。

29

注意问题:

1.注意理解各算法实现时所采用的存储结构。

2.注意区别正、逆邻接。

30


朱颢东2015-2016学年第二学期《数据结构》实验指导书(修订版)-1(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:郑东新区招商引资炼成“兵法”大揭秘!

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: