哈弗曼编码译码器
专 业 班 级 :XXXX 学 号 :XXXX 姓 名 :XXXX 指 导 教 师 :XXXX 课程设计时间:XXXX
计算机专业 数据结构 课程设计任务书
学生姓名 题 目 课题性质 指导教师 设计一个哈弗曼编码译码器,实现哈夫曼树的建立,树形输出,编码和解码。 主要内容 XXXX 专业班级 XXXX 学号 XXXX 哈弗曼编码译码器 工程设计 XXXX 课题来源 同组姓名 XXXX XXXX 1.研究哈弗曼树的数据存储方式 2.实现哈弗曼编码译码器的主要算法 任务要求 3.分析算法的运行效率 4.具有良好的运行界面 5.算法具有良好的健壮性 6.按要求撰写课程设计报告和设计总结。 参考文献 1.《数据结构(C语言版)》,严蔚敏、吴伟民,清华大学出版社,1997. 审查意见 指导教师签字: 教研室主任签字: 年 月 日
1 需求分析
设计一个哈弗曼编码译码器,实现哈夫曼树的建立,树形输出,编码和解码。 2 概要设计
建立哈夫曼树 查看哈夫曼编码 树形输出哈夫哈夫曼文件编码 哈夫曼文件解码帮助退出系统 main
3 运行环境(软、硬件环境)
1) 硬件:PC机
2) 操作系统:Windows 2000/XP/2003 3) 编译环境:Visual C++6.0
4 开发工具和编程语言
开发工具:VISCALL c++6.0; 编程语言:C语言。
5 详细设计
#include
typedef struct // 结点的结构 { unsigned int weight; // 结点的权值
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree; // 动态分配数组存储哈夫曼树
typedef char **HuffmanCode; // 动态分配数组存储哈夫曼编码 HuffmanTree HT; HuffmanCode HC; int n=8; const char menu[]=
\
建
立
哈
夫
曼
树
|\\n\ |\\n\ |\\n\ |\\n\ |\\n\ |\\n\
\
查
看
哈
夫
曼
编
码
\树形输出哈夫曼树
\哈夫曼文件编码
\哈夫曼文件解码
\帮助
\|\\n\
退出系统
const char helpsabout[]=
\
主
要
功
能
|\\n\
:
\利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息的传输时间,降低 |\\n\
\传输成本。但是,这要求在发送端通过一个编码系统对待传输的数据预先编码,在接收 |\\n\
\端将传来的数据进行译码(复原)。对于双工信道,每端都要有一个完整的编/译码系 |\\n\ |\\n\ |\\n\
\统。本系统即是为这样的信息收发站写一个哈夫曼码的编/译系统。
\
\
void Huffmantree(); void Huffmancode();