课程设计报告
一、总体设计
目标设计
设计题目:
利用哈夫曼算法进行文件的压缩和解压缩。
基本功能:
利用命令行对指定的文件进行压缩和解压缩。
输入格式为:
course(程序名) <[-c] [-d] [-?]>(参数:分别对应压缩、解压缩、帮助) <原文件名> <目标文件名>
指标要求:
能对一般的文本文件有较好的压缩能力,对其它格式文件可以进行压缩但不一
定能有压缩效果。对于用此程序压缩的文件可以用此程序解压回原文件。
框架设计
由于此程序主要任务为压缩和解压缩,故整个程序由这两个大的模块构成。
压缩需要的步骤为:
1. 统计所压缩文件的字符频率分布;根据上步分布创建哈夫曼树;
2. 把哈夫曼树的对应结点的父结点下标(256 到 510)减去 256 形成一个字节
的整型数写入新建文件,并预留一个字节位置给最后的一个有效位数;
3. 利用哈夫曼树对该文件进行逐个字节的编码,把编码每 8 位转换成一个字
节写入新的文件,最后不够 8 位的补 0 充满 8 位写入文件,并得到一个有效
位数;
4. 重新定位那个预留的位置,把有效位数存在这个位置。
解压缩需要的步骤为:
1. 打开要解压的程序,读文件头的 512 个字节,把前 511 个字节还原为哈夫曼
树待用,第 512 个字节存到一个变量中去;
2. 然后逐个字节进行读取,把 0-255 的十进制整数转化为二进制数,利用这
- 1
- 2
- 3
- 4
前往页