1 / 46
文档名称:

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

格式:ppt   大小:405KB   页数:46页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

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

上传人:dreamzhangning 2019/5/30 文件大小:405 KB

下载得到文件列表

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

相关文档

文档介绍

文档介绍:压缩程序(哈弗曼编码算法),使用动态编码。,Huffman树的存储可以直接存储树结构,也可以存储所有字符的频度或权值,然后读取时建立Huffman树;,注意定义压缩码的结束标记,可以使用一个特殊的字符作为结束标记,也可以在压缩码之前存储其比特长度;如果使用一个特殊字符作为结束标记,则其频度为1,需要在建立Huffman树时把它看作一个独立的字符进行建树。,在一个缓冲区里面收集压缩码比特流,每当收集的比特数满8时,可以把这8比特通过位操作合并成一个字节写入文件(当然也可以收集满一定数目的字节后再写入文件)。写入文件的最小信息单位为字节。概要分析采用顺序表实现对Huffman树的存储//---------------Huffman树存储结构------------------typedefstruct{intweight;intlchild,rchild,parent;}HuffmanTree;typedefHuffmanTreeHTree[m];weight域存有该节点字符的权值,lchild、rchild、parent分别存放该节点的左孩子、右孩子和双亲节点在顺序表中的位置。采用顺序表实现对Huffman编码的存储//---------------Huffman编码存储结构------------------typedefstruct{charch;intstart;charbits[n+1];}HuffmanCode;typedefHuffmanCodeHCode[n];ch存放对应的字符,start存放Huffman编码在字符数组bits[]中开始的位置。抽象数据抽象数据类型定义:ADT{数据对象:txt文档基本操作:FileRead(intcount[],chars[],charfilename[])初始条件:压缩文档存在。操作结果:对该文档进行读取,求其所有出现的字符和字符的权值。CreateHuffmanTree(HTreeT,intN,intcount[],chars[])初始条件:以求得该文档的字符和权值。操作结果:建立Huffman树。HuffmanCoding(HTreeT,HCodeH,intN,chars[])初始条件:Huffman树。操作结果:求各个字符的Huffman编码。FilePrint(HTreeT,HCodeH,intN)初始条件:求得Huffman编码以及各节点的权值。操作结果:、、。FileWrite(HCodeH,intN,charfilename[])初始条件:求得Huffman编码以及各节点的权值。操作结果:。FileConvert(void)初始条件:。操作结果:将字符形式的Huffman编码翻译成二进制形式,,。FileRead(HTreeT,HCodeH)初始条件:、、。操作结果:读取字符及其权值和其Huffman编码。FileExtract(void)初始条件:。操作结果:,。FileTrans(HTreeT,HCodeH,intN)初始条件:已生成File00,txt并已求得各个字符的Huffman编码,Huffman树已建立。操作结果:将Huffman编码翻译成原文件,。}ADT还需要包含调用若干库文件:,,。采用C语言的编程方法在VC++。 主程序流程图 压缩部分