文件压缩/解压缩程序Huffman编码 数据结构实习

//哈夫曼树 最开始来自信号处理//一亿个数排序

【问题描述】

利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。

【基本要求】

一个完整的系统应具有以下功能:

(1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。

(2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。

(3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。

(4)程序使用命令行方式运行,示例如下:

压缩命令  :SZip  A  Test.Haf  1.doc

解压缩命令:SZip  X  Test.Haf  2.doc  或 SZip  X  Test.Haf

用户输入的命令不正确时,给出提示。

(5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。

【提高要求】

(1)基于Windows对话框界面,可选择输入/输出文件名,有压缩进度条显示。

(2)采用不同的数据集,比较其压缩比,采用最有效的压缩方式。

(3)多个文件的压缩。

(4)试构建程序框架,使其能添加新的压缩/解压缩算法(例如书上LZW压缩算法)。

发表评论