实验目的:
问题重述
利用哈夫曼编码进行信息通信,可以大大提高信道利用率,缩短信息传输
时间,同时降低传输成本。
但是,这要求在发送端通过一个编码系统对待传数据预先编码;在接收端
将传来的数据进行译码(复原)。对于双工信道(即可以双向传输信息的信
道),每端都需要一个完整的编译码系统。
试为这样的信息收发站写一个哈夫曼码的编译码系统。
基本要求
一个完整的系统应具有以下功能:
硬件环境:b
:内存:
软件环境:
操作系统: !"#家庭中文版 $ 位bb
%&:'编译器:())
实验步骤与内容:b
一、需求分析
经分析,哈夫曼编译码系统需要实现的用户基本需求有:
1. 建树:
用户可自主输入字符和权值以建立哈夫曼树。
2. 编码:
用户可从终端或文件中用已建的哈夫曼树对字符串进行编码并存储。
3. 解码:
用户可将编码后的存储文件解码为字符串形式。
如此即视为一个哈夫曼编译码系统的成功实现。
4. 数据可视化:
为使用户获得更好的体验,以上步骤应体现在 中由用户进行操作;
同时,用户在 中还可直接观察第一步中已建立的数的图形化展示,
以及存储的二进制代码的展示界面。
二、算法分析
根据本实验要求,涉及的基础算法是哈夫曼算法。其基本思想是:
代号 功能名称 功能效果
初始化
从终端读入字符集大小 及 个字符和 * 个权值,
建立哈夫曼树,并将它存于文件 +,* 中
编码
利用已建好的哈夫曼树(如不在内存,则从文件 +,*
中读入),对文件 -'# 中的正文进行编码,然后将
结果存入文件 )!./ 中
%
解码
利用已建好的哈夫曼树将文件 )!./ 中的代码进行译
码,结果存入文件 0./ 中
打印
将文件 )!./ 以紧凑格式显示在终端上,每行 个代
码。同时将此字符形式的编码文件写入文件 )!1 中
打印
哈夫曼树
将已在内存中的哈夫曼树以直观的方式(树或凹入表形
式)显示在终端上,同时将此字符形式的哈夫曼树写入文
件 1 中
- 1
- 2
前往页