英文文件的压缩和解压缩程序

英文文件的压缩和解压缩程序


2024年4月20日发(作者:今晚斯诺克比赛直播)

合肥学院

计算机科学与技术系

一、问题分析和任务定义

1、 题目

采用哈夫曼编码思想实现英文文本的压缩与解压缩,并提供压缩前后的占用空间比。

要求 1)压缩原文件规模不小于5K

2) 提供解压缩文件后文件与原文件的相同性比较功能

2、问题分析

压缩过程 

1、以读的形式打开需要压缩的一个英文本文件,把其中出现的所有字符按其在文本

中出现的频率利用哈夫曼树进行编码。

2、以写的形式打开一个新的文本文件,把它作为英文文本压缩后的文本文件,扫描

需要压缩的英英文本文件( )中所有字符,把其对应的编码通过转换后存入新的

文本文件( )中。

3、把需要压缩的英文文本( )中所出现的字符及其编码等原始文件的信息

保存在新的文本文件中。

解压缩过程 

1、以读的形式打开一个压缩文件 ,按其中保存的原始文件的信息还原哈

夫曼树及字符编码。

2、 以写的形式打开一个新的文本文件,作为解压后的英文文本 ,逐个扫

描压缩文件 中的所有字符,把其中所有转换后的编码再转换回来并与哈夫曼树

中存储的字符编码比较,把其对应的字符写入 中。

一个字符在文本文件中存储时占一个字节,而其二进制编码若直接存入文本文件其所

占的空间不会少于一个字节。例如:假设字符E的编码为001,若把001直接存入文件只能

用字符串的形式,其所占用的空间为三个字节。达不到文件压缩的目的,所以必须对编码的

存储空间进行转换。

3 编码转换

在文本文件中字符之间是连续的,所以在文本文件中存储编码也是连续的。可以把连

续的不同字符的编码存入同一个字节,再把这一个字节的二进制码转换成一个字符,把转换

后的字符存储在文本文件中。

二、数据结构的选择和概要设计:

1 此程序采用的数据结构为顺序表。哈夫曼树是二叉树的一种,二叉树的顺序存储结构

中可以把结点间的关系放在其存储位置中,无需附加任何信息就能在这种结构中找到每个结

点的双亲结点和孩子结点,这正是哈夫曼编码所需要的。

哈夫曼树顺序表:结构体header[512],表中每个结点包括以下信息

unsigned char b 字符名

long count

long parent

Long lch

Long rch

char bits[256]

在文件中出现次数

父结点

左孩子结点

右孩子结点

字符编码

原文件 压缩文件

Compress

内容相同

Uncompress

解压后

图1 程序的实现过程

表1 程序中所包括的函数及其功能

函数名

compress( )

huffman()

所实现的功能

实现 文件压缩 (被主函数调用)

对文件中出现的字符进行编码(被以上两函数调用)

uncompress( ) 实现 文件解压缩 (被主函数调用)

Main()

compress uncompress

huffam

图2 程序模块间的调用关系


发布者:admin,转转请注明出处:http://www.yc00.com/xitong/1713627051a2286686.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信