《数据结构》课程设计报告
设计题目 赫夫曼编译码器
专 业
班 级
姓 名
学 号
完成日期
共 24 页 第 1 页
目 录
1. 问题描述……………………………………………… 01
2. 系统设计……………………………………………… 02
3. 数据结构与算法描述………………………………… 03
4. 测试结果与分析………………………………………06
5. 总 结…………………………………………………08
6. 参考文献………………………………………………08
附录 程序源代码…………………………………………09
共 24 页 第 2 页
课程设计题目
1. 问题描述:利用哈夫曼编码进行信息通信可以大大提高信道利用
率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一
个编码系统对待传数据预先编码,在接收端将传来的数据进行译码(复
原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个
完整的编译码系统。试为这样的信息收发站写一个哈夫曼编译码系统。
2. 系统设计
2.1 设计目标
要求是对输入的一串电文字符实现赫夫曼编码,再对赫夫曼编码生成的
代码串进行译码,输出电文字符串。
2.2 设计思想
假设每种字符在电文中出现的次数为 ,编码长度为 ,电文中有
中字符,则电文编码总长为。若将刺对应在二叉树上, 为叶
结点, 为根结点到叶结点的路径长度。
因此,设计电文长度总长最短的二进制前缀编码,就是以 种字符出现
的频率作权,构造一颗赫夫曼树,此构造过程成为赫夫曼编码。
2.3 系统模块划分(要给出流程图)
赫夫曼树的建立,三个函数:
()() 在 种选择 为 且权值最小的
两个根结点
共 24 页 第 3 页
() !统计字符串中各种字母的个数以及自负的种类
()" !初始化构造的赫夫曼树 。从终端读入字符集大小
,以及 个字符和 个权值,建立哈夫曼树,并将 它 存 于 文 件
# 中。
生成赫夫曼编码文件的两个函数
()$% !根据赫夫曼树 求赫夫曼编码表 &。
利用已建好的哈夫曼树(如不在内存,则从文件 # 中读入),
对文件 ' 中的正文进行编码,然后将结果存入文件 &(
中。
())% !对 所代表的字符串进行编码,并写入文件。
利用已建好的哈夫曼树将文件 &( 中的代码进行译码,结果存入
文件 *( 中。
打印出结果 两个函数
()+% !打印输出代码文件。将文件 &( 以紧凑格
式显示在终端上,每行 , 个代码。同时将此字符形式的编码写入文件
&+ 中。
()+% !打印哈夫曼树(树形)。将已在内存中
的哈夫曼树以直观的方式(树或凹入表形式)显示在终端上,同时将此
字符形式的哈夫曼树写入文件 + 中。
3. 数据结构与算法描述
本程序需定义一个赫夫曼树的结点的类型和一个赫夫曼树分
别如下:
-
共 24 页 第 4 页