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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

哈夫曼压缩解压数据结构设计报告Word文件下载.docx

1、在文本文件中多采用二进制编码。为了使文件尽可能的缩短,可以对文件中每个字符出现的次数进行统计。设法让出现次数多的字符二进制码短些,而让那些很少出现的字符二进制码长一些。若对字符集进行不等长编码,则要求字符集中任一字符的编码都不是其它字符编码的前缀。为了确保哈夫曼编码的唯一性,我们可以对它的左右子树的大小给予比较限定,如:左子树的权值小于右子树的权值。哈夫曼树中的左右分支各代表0和1,则从根节点到叶子节点所经历的路径分支的0和1组成的字符串,为该节点对应字符的哈夫曼编码。统计字符中每个字符在文件中出现的平均概率(概率越大,要求编码越短)。利用哈夫曼树的特点:权越大的叶子离根越近,将每个字符的概率

2、值作为权值,构造哈夫曼树。则概率越大的节点,路径越短。哈夫曼译码是从二进制序列的头部开始,顺序匹配成共的部分替换成相应的字符,直至二进制转换为字符序列。哈夫曼用于文件解压缩的基础是在压缩二进制代码的同时还必须存储相应的编码,这样就可以根据存储的哈夫曼编码对压缩代码进行压缩。总之,该课题的任务应该是首先要打开要压缩的文本文件并读出其字符出现的频率,以其为权值构建哈夫曼树。其次要找到构建压缩功能的方法,在构建哈夫曼树的基础上进行编码,改变字符原先的存储结构,以达到压缩文件的目的,以外还有存储相应的哈夫曼编码,为解压缩做准备。测试用数据本实验的数据是通过读入一个名为的文本文档,文档中内容为字符型数据

3、。二、概要设计和数据结构的选择以下是在任务分析对题意的理解做出的概要设计和对数据结构的选择:1、数据结构定义【1】/C+程序设计(第2版)【M】.高等教育出版社,2009年9月【2】郑莉等. c+语言程序设计(第三版)【M】.北京:清华大学出版社,2003年12月附录: odelen != 0) delete HTi.code; eight=MAX) eight = 0; leafnum+; HTc+128.weight+; arent != -1) continue; if(loc1=-1 | HTj.weight HTloc1.weight) loc2 = loc1; loc1 = j;

4、else if(loc2=-1 | HTj.weight loc2 loc2 : loc1; HTi.rchild = loc1loc2 loc1 : loc2; HTloc1.parent = i; HTloc2.parent = i; root = i;odelen!=0) cout 值为 i-128 的字符的huffman编码:; for(int j=0; jHTi.codelen; j+) cout =0; j-) arent.lchild) HTi.codej = 0; else HTi.codej = 1; loc = HTloc.parent;arent=-1) arent-38

5、4); while(c) odelen; i+) addbit(HTtmp.codei); if(bitsnum=8) arent = c+384; if(HTc+384.lchild=-1) HTc+384.lchild = i; HTc+384.rchild = i; int point = root; child; if(HTpoint.lchild=-1 & HTpoint.rchild=-1) (char(point-128); point = root; c = c 1; point = HTpoint.rchild; (); c = (); child; if(HTpoint.l

6、child=-1 & (char(point-128); point = root; c = c else point = HTpoint.rchild; (); return true;/将原文件与压缩后的文件比较void huffmanTree:compare(char *input, char *output) ifstream origin, compress; (input,ios:binary); (output,ios: if(!origin) cout 无法打开文件 input ! return;compress) output double total1=0, total2=

7、0; char c; total1+; total2+; cout 原文件大小: total1 Byte压缩后大小: total2 压缩率: total2/total1*100 %/将原文件与恢复后的文件比较compare2(char *input, char *output) ifstream origin, decompress; char c1, c2; bool dif = false; while(c1) & (c2) if(c1!=c2) /依次比较每个字节,不同则将dif标志设为true dif = true; while(c1) /若原文件还有剩余的数据,将dif设为true

8、dif = true; while(c2) /若恢复文件还有剩余的数据,将dif设为true恢复文件大小: if(dif=true)原文件与恢复文件不同! else原文件与恢复文件相同!/#/#include void main() int choice = 1; char input255, output255; huffmanTree h; while(choice) cout cin choice; switch(choice) case 1:请输入待压缩的文件名: cin input;请输入压缩后的文件名: output; if( (input,output) (); (input,output); coutendl文件压缩成功! else文件压缩失败! break; case 2:请输入待恢复的文件名:请输入恢复后的文件名: if (input,output)文件恢复成功! else文件恢复失败! case 3:请输入原文件的文件名:请输入恢复文件的文件名: (input,output); case 4: /执行清屏命令 system(cls); case 5: default:参数错误!请重新输入

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

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