哈弗曼编码/译码系统(数据结构)
一、 需求分析
1、 问题描述
利用哈夫曼编码进行通信,可以压缩通信的数据量,提高传输效率,缩短信息的传输时间,还有一定的保密性。现在要求编写一程序模拟传输过程,实现在发送前将要发送的字符信息进行编码,然后进行发送,接收后将传来的数据进行译码,将信息还原成发送前的字符信息。
发送者的功能包括:
①输入待传送的字符信息;
②统计字符信息中出现的字符种类数和各字符出现的次数(频率
②根据字符的种类数和各自出现的次数建立哈夫曼树;
③利用以上哈夫曼树求出各字符的哈夫曼编码;
④将字符信息转换成对应的编码信息进行传送。
接受者的功能包括:
② 接收发送者传送来的编码信息;
②利用上述哈夫曼树对编码信息进行翻译, 即将编码信息还原成发送前的字符信息。
2、 输入输出形式及要求
2.1输入输出的范围
输入参数为一个密文,即一个字符串,和一个二进制编码,即密文。
输出格式按照题目要求进行输出,下面给出一个完整示例。
二 、概要设计
1、数据存储方式
typedef struct node
{
char letter; //字符
int weight; //权值
int parent; //父母结点
int lchild; //左孩子结点
int rchild; //右孩子结点
}HNodeType;
/字符编码类型/
typedef struct
{
char letter; // 字符