ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:25.66KB ,
资源ID:13930391      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13930391.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(文件压缩程序设计报告Word文档下载推荐.docx)为本站会员(b****0)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

文件压缩程序设计报告Word文档下载推荐.docx

1、外,短语式压缩后的结果:那些剩下的未被匹配的单、双字节和得到匹配的距离、长度值仍然具有取值分布不均匀性,因此,两种压缩方式的顺序不能变。本程序设计只做了编码式压缩,采用Huffman编码进行压缩和解压缩。编码是一种可变长编码方式,是二叉树的一种特殊转化形式。编码的原理是:将使用次数多的代码转换成长度较短的代码,而使用次数少的可以使用较长的编码,并且保持编码的唯一可解性。根据 ascii 码文件中各 ascii 字符出现的频率情况创建Huffman 树,再将各字符对应的哈夫曼编码写入文件中。同时,亦可根据对应的哈夫曼树,将哈夫曼编码文件解压成字符文件.二、概要设计:主程序流程图:主函数统计字符,

2、得退出测试输入测试字符串统计字符信息,建立Huffman曼树根据Huffman树,求得对应字符的Huffman编码输入Huffman编码,求得解码出统计出的字符的权值n根据权值进行建立Huffman树输出Huffman树编码输出编码压缩编码生成压缩文件扫描压缩文件,载入字符信息解码解压生成新的文本文档压缩过程的实现:压缩过程的流程是清晰而简单的:1. 创建2. 打开需压缩文件3. 将需压缩文件中的每个ascii码对应的huffman编码按bit单位输出生成压缩文件压缩结束。其中,步骤1和步骤3是压缩过程的关键。 步骤1:这里所要做工作是得到数中各叶子结点字符出现的频率并进行创建.统计字符出现的

3、频率可以有很多方法:如每次创建前扫描被创建的文件,“实时”的生成各字符的出现频率;或者是创建前即做好统计.这里采用的是前一种方法。3:将需压缩文件中的每个单位输出.这是本压缩程序中最关键的部分:这里涉及“转换”和“输出”两个关键步骤: “转换”部分大可不必去通过遍历树来找到每个字符对应的哈夫曼编码,可以将每个码值及其对应的码存放于如下所示的结构体中:解压缩过程的实现:如果说,压缩的过程可以通过查找codeList来加速实现的话,而解压缩则必须通过查找树才能加以实现.查找的过程是简单的,可以根据树的性质来做,当haffCode的当前位为0时,则向左枝展开搜索;当前bit 位为时,则向右枝展开搜索

4、,当遇到叶子结点时,则输出对应的asciiCode。三、详细设计:核心算法源程序:树建立源程序:/-/huffmantree.h/霍夫曼树#ifndefHUFFMANTREE#defineDefaultsize300#includebintree.hheap.hclassCodepublic:intcode;Code*link;Code(intc=0,Code*l=NULL):code(c),link(l);CharNameNodeunsignedcharcharname;/要这样才行CharNameNode(unsignedcharname(c),link(l);templateTypeHu

5、ffmanTree:publicBinaryTreekey;HuffmanTree();HuffmanTree(HuffmanTree&ht1,HuffmanTreeht2)Typetemp=0;/可能有变key=ht1.key+ht2.key;root=newBinTreeNode(0,Copy(ht1.root),Copy(ht2.root);voidBuild(int*fr,Type*value,intn,HuffmanTreenewtree);Path(BinTreeNode*start,Code*first,Code*last,CharNameNode*Node,inti);/一个数

6、组HuffmanTree:newtree) /fr为value(值)对应的权i;first,second;NodeDefaultsize;MinHeaphp;assert(n=0&n=Defaultsize);for(i=0;in;i+)Nodei.root=new(valuei,NULL,NULL);Nodei.key=fri;hp=MinHeap(Node,n);n-1;hp.RemoveMin(first);hp.RemoveMin(second);*temp=new(first,second);hp.Insert(*temp);hp.RemoveMin(newtree);templat

7、evoid HuffmanTreeGetData()!=0)/是叶结点严重错误,可能叶结点也是0!if(start-GetLeft()=NULL&start-GetRight()=NULL)Nodei.charname=start-GetData();Nodei.link=NULL;if(first=NULL)Nodei.link=newCode(first-code);*p=first-link,*q=Nodei.link;while(p!=NULL)q-link=newCode(p-q=q-link;p=p-link=NULL;i+;*temp=newCode;/进入左子树assert(t

8、emp);first=last=temp;elselast-link=temp;last=last-Path(start-GetLeft(),first,last,Node,i);code=1;GetRight(),first,last,Node,i);temp=first;if(first=last)deletelast;first=last=NULL;while(temp-link!=last)temp=temp-temp-last=temp;#endif实现二叉树的算法源程序:/-/bintree.h/用指针实现的二叉树/Type类型必须有重载及运算BINTREEassert.hMax(inta,intb)returnab?a:b;BinaryTree;BinTreeNodefriend;BinTreeNode():leftchild(NULL),rightchild(NULL);BinTreeNode(Typeitem,BinTreeNode*left=NULL,BinTreeNode*right=NULL)data(item),leftchild(left),rightchild(right);GetData()constdata;*GetLeft()constleftchild;*GetRight()constrightchild;vo

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1