C语言等长编码压缩和哈夫曼编码压缩
利用哈夫曼算法对文件进行压缩及解压缩
题目:
选择一个英文纯文本文档(不少于3千字,也可以更多),分别利用等长编码和哈夫曼编码对其进行压缩,计算压缩比,并解压缩。
提交材料:
1.源代码;
2.测试数据源文件;
3.压缩后得到的压缩文件;
4.执行界面截屏;
5.实验报告。
注意事项:
1.学习通上提交;
2.截止到开学前。
等长编码压缩原理
文件是由字符构成的。ASCII字符集中大约包含了100个可打印字符,为了区分它们,需要[log,1007]=7位的二进制串表示,而7位串共
能表示2'=128个字符,所以ASCII字符集又增加了一些非打印字符。也就是说,如果字符集包含C个字符,则在标准的等长编码中,每个字符由一个[ log,C]位的二进制串表示。
假设有一个文件仅包含7个字符:a, e i ,s ,t, sp(空格)和nl(换行),且文件中有10个a, 15个e,12个i,3个s,4个t,13个sp,1个nl。因为「 log,7]=3,所以,每个字符都至少由一个3位的二进制串表示。于是文件的总位数至少为
10×3+15×3+12×3+3×3+4×3+13×3+1×3 =174
在实际应用的一些大文件中,字符被使用的比率是非平均的,即有些字符出现的次数多,而有些字符出现的次数却非常少。例如,在一般的大型数据文件中,通常含有大量的数字、空格和换行,但是某些字符(如q,x)却很少出现。如果所有字符都由等长的二进制码表示,那么将造成空间浪费。
源码下载
链接:https://pan.baidu.com/s/1JJs9vbZahUCB6cQvXLgAVg?pwd=1111
提取码:1111