压缩程序(哈弗曼编码算法).ppt

压缩程序(哈弗曼编码算法).ppt

ID:51590578

大小:400.00 KB

页数:46页

时间:2020-03-24

压缩程序(哈弗曼编码算法).ppt_第1页
压缩程序(哈弗曼编码算法).ppt_第2页
压缩程序(哈弗曼编码算法).ppt_第3页
压缩程序(哈弗曼编码算法).ppt_第4页
压缩程序(哈弗曼编码算法).ppt_第5页
资源描述:

《压缩程序(哈弗曼编码算法).ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、压缩程序(哈弗曼编码算法)谢涛需求分析1.写一个对txt文件压缩和解压的程序,使用动态编码。2.使用Huffman编码压缩和解压时,Huffman树的存储可以直接存储树结构,也可以存储所有字符的频度或权值,然后读取时建立Huffman树;3.使用Huffman编码压缩和解压时,注意定义压缩码的结束标记,可以使用一个特殊的字符作为结束标记,也可以在压缩码之前存储其比特长度;如果使用一个特殊字符作为结束标记,则其频度为1,需要在建立Huffman树时把它看作一个独立的字符进行建树。4.使用Huffman编码压缩和解压时,在一个缓冲区里面收集压缩码比特流,每当收集的比特数满8时,可以把这8比特通过

2、位操作合并成一个字节写入文件(当然也可以收集满一定数目的字节后再写入文件)。写入文件的最小信息单位为字节。概要分析采用顺序表实现对Huffman树的存储//---------------Huffman树存储结构------------------typedefstruct{intweight;intlchild,rchild,parent;}HuffmanTree;typedefHuffmanTreeHTree[m];weight域存有该节点字符的权值,lchild、rchild、parent分别存放该节点的左孩子、右孩子和双亲节点在顺序表中的位置。采用顺序表实现对Huffman编码的存储/

3、/---------------Huffman编码存储结构------------------typedefstruct{charch;intstart;charbits[n+1];}HuffmanCode;typedefHuffmanCodeHCode[n];ch存放对应的字符,start存放Huffman编码在字符数组bits[]中开始的位置。抽象数据抽象数据类型定义:ADT{数据对象:txt文档基本操作:FileRead(intcount[],chars[],charfilename[])初始条件:压缩文档存在。操作结果:对该文档进行读取,求其所有出现的字符和字符的权值。CreateH

4、uffmanTree(HTreeT,intN,intcount[],chars[])初始条件:以求得该文档的字符和权值。操作结果:建立Huffman树。HuffmanCoding(HTreeT,HCodeH,intN,chars[])初始条件:Huffman树。操作结果:求各个字符的Huffman编码。FilePrint(HTreeT,HCodeH,intN)初始条件:求得Huffman编码以及各节点的权值。操作结果:将求得的数据分别存放在HuffmanCode.txt、Char.txt、Weight.txt中。FileWrite(HCodeH,intN,charfilename[])初始条

5、件:求得Huffman编码以及各节点的权值。操作结果:将文档翻译成Huffman编码以字符形式存放在File.txt中。FileConvert(void)初始条件:File.txt存在。操作结果:将字符形式的Huffman编码翻译成二进制形式,每首季8比特就通过位操作合并成一个字节写入文件code.txt中,最后不足8位时将最后的几位存放在Tail.txt中。FileRead(HTreeT,HCodeH)初始条件:压缩生成的HuffmanCode.txt、Char.txt、Weight.txt存在。操作结果:读取字符及其权值和其Huffman编码。FileExtract(void)初始条件:

6、压缩结果文件Code.txt和tail.txt存在。操作结果:将code.txt和tail.txt中的字符写成编码的二进制字符形式,写进file00.txt。FileTrans(HTreeT,HCodeH,intN)初始条件:已生成File00,txt并已求得各个字符的Huffman编码,Huffman树已建立。操作结果:将Huffman编码翻译成原文件,写入translated.txt。}ADT还需要包含调用若干库文件:stdio.h,malloc.h,string.h。主函数统计字符,得出统计出的字符的权值n编码解码退出根据权值进行建立哈夫曼树输出哈夫曼树输出编码压缩编码生成二进制文件解

7、压生成新的文本文档采用C语言的编程方法在VC++6.0环境下实现本题目的要求。 主程序流程图建立哈夫曼树输出哈夫曼树输出编码根据哈夫曼树编码对编码进行压缩根据哈夫曼树解码生成二进制文件对二进制文件进行解压生成文本文档压缩部分#include#include#include#defineMAX_SIZE1000000#definen150#definem

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。