篇三:
数据结构课程设计:
哈夫曼编码器
摘要
哈夫曼(huffman)树是一种带权路径长度最小的二叉树,也称最优二叉树,它有着极为广泛的应用。
而我今天做的课程设计就是其中的一个应用---哈夫曼编码器。
其实它的思想很简单,显示根据输入的权值建立一棵哈夫曼树,然后根据哈夫曼数求出各个叶结点的编码。
这样就构成了一个最简单的哈夫曼编码器。
关键词:
哈夫曼树编码器最优二叉树带权路径长度
1课题分析.....................................................................................................................................................1
1.1设计目的.........................................................................................................................................1
1.2设计要求.........................................................................................................................................1
1.3设计内容..........................................................................................................................................1
2总体设计与分析.......................................................................................................................................3
2.1功能函数设计................................................................................................................................3
2.1.1建立哈夫曼树......................................................................................................................3
2.2.2求哈夫曼编码函数..............................................................................................................3
2.2.3打印编码函数......................................................................................................................3
3程序说明.....................................................................................................................................................4
3.1结构图.............................................................................................................................................4
4程序调试.....................................................................................................................................................5
4.1菜单.................................................................................................................................................5
4.2输入叶结点和权值.........................................................................................................................6
4.3输出哈夫曼编码..............................................................................................................................7
5设计问题.....................................................................................................................................................8
5.1存入文件..........................................................................................................................................8
5.1.1问题1...................................................................................................................................8
5.1.2问题2...................................................................................................................................8
6小结.............................................................................................................................................................9
参考文献.......................................................................................................................................................10
源代码...........................................................................................................................................................11
1课题分析
在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。
哈夫曼编码是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。
哈夫曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。
这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。
赫夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。
树中从根到每个叶子都有一条路径,对路径上的各分支约定:
指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为