数学与计算机学院 数据结构 实验报告
年级 09数计
学号 ***
姓名 **
专业 数电
实验地点 主楼401
指导教师 **
实验项目 哈夫曼树解决编码解码
实验日期 XX年12月24日
一、实验目的
本实验的目的是通过对简单的哈夫曼编/译码系统的设计与实现来熟练掌握树形结构在实际问题中的应用。
二、实验问题描述
利用哈夫曼编码进行通信可以大大提高通信利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码,此试验即设计这样的一个简单的编/译码系统。系统应该具备如下的几个功能。
1、求出各个叶子节点的权重值
输入一个字符串,统计其中各个字母的个数和总的字母个数。
2、构造哈夫曼树
统计出的字母种类为叶子结点个数,每个字母个数为相应的权值,建立哈
夫曼树。
3、打印哈弗曼树的功能模块
按照一定形式打印出哈夫曼树。
4、编码
利用已经建立好的哈夫曼树进行编码。
5、译码
根据编码规则对输入的代码进行翻译并将译码。
三、实验步骤
1、实验问题分析
(1)设计一个结构体数组保存字母的类型和个数。
typedef struct{
char ch; //字母的种类
int num; //字母的个数
}inf;
(2)在构造哈夫曼树时,设计一个结构体数组Hufftree保存哈夫曼树中各结 点的信息,根据二叉树的性质可知,具有n个结点的哈夫曼树共有2n-1个结 点,所以数组大小设置为2n-1,描述结点的数据类型为:
typedef struct{
int weight; //权值
int parent; //双亲
…… …… 余下全文