基于Huffman哈夫曼编码的文件压缩与解压缩

Tenderne

发布日期: 2019-06-09 16:13:32 浏览量: 572
评分:
star star star star star star star star star_border star_border
*转载请注明来自write-bug.com

一、实验题目

用哈夫曼编码实现文件压缩

二、实验目的

  • 了解文件的概念

  • 掌握线性链表的插入、删除等算法

  • 掌握Huffman树的概念及构造方法

  • 掌握二叉树的存储结构及遍历算法

  • 利用Huffman树及Huffman编码,掌握实现文件压缩的一般原理

三、实验设备与环境

  • 微型计算机

  • Windows 系列操作系统

  • Visual C++6.0软件

四、实验内容

根据ascii码文件中各ascii字符出现的频率情况创建Haffman树,再将各字符对应的哈夫曼编码写入文件中,实现文件压缩。

五、概要设计

5.1 构造Hufffman树的方法—Hufffman算法

构造Huffman树步骤:

  • 根据给定的n个权值{w1,w2,……wn},构造n棵只有根结点的二叉树,令起权值为wj

  • 在森林中选取两棵根结点权值最小的树作左右子树,构造一棵新的二叉树,置新二叉树根结点权值为其左右子树根结点权值之和

  • 在森林中删除这两棵树,同时将新得到的二叉树加入森林中

  • 重复上述两步,直到只含一棵树为止,这棵树即哈夫曼树

5.2 Huffman编码:数据通信用的二进制编码

  • 思想:根据字符出现频率编码,使电文总长最短

  • 编码:根据字符出现频率构造Huffman树,然后将树中结点引向其左孩子的分支标“0”,引向其右孩子的分支标“1”;每个字符的编码即为从根到每个叶子的路径上得到的0、1序列

5.3 压缩

压缩流程图

5.4 解压

根据存放在文件中的编码表和文件压缩后的编码,进行一对一的翻译过程。

六、测试结果及分析

压缩文件

压缩前文件的内容

压缩后文件的内容

解压文件

解压后文件的内容

上传的附件 cloud_download 基于Huffman哈夫曼编码的文件压缩与解压缩.7z ( 242.43kb, 2次下载 )
error_outline 下载需要11点积分

发送私信

回首才能读懂人生,但频频回首会耽误你往前走

11
文章数
17
评论数
最近文章
eject