第四次。赫夫曼编码的应用 - 副本.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四次。赫夫曼编码的应用 - 副本

目 录 1概述 2 1.1现状 2 1.2存在的问题 2 1.3实现的意义 2 2系统分析 2 2.1设计者的需求分析 2 2.2用户需求分析 3 3概要设计 3 4详细设计 4 4.1赫夫曼树的存储结构描述为: 4 4.2统计字符串的算法 5 4.2.1选择parent为0且权值最小的两个根结点的算法的定义 5 4.2.2统计字符串中字符的种类以及各类字符的个数 5 4.3构造赫夫曼树 6 4.4赫夫曼编码 7 4.4.1赫夫曼编码算法 7 4.4.2建立正文的编码文件 7 4.5代码文件的译码 8 5运行与测试 9 总结与心得 9 7参考文献 10 7.1 数据结构(C语言版) 严蔚敏 吴伟民 编著 10 7.2 C程序设计(第三版) 谭浩强 著 10 7.3 数据结构课程设计 苏仕华 等编著 10 1概述 1.1现状 在当今信息爆炸的时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起了人们的重视,赫夫曼编码正是一种应用广泛且非常有效的数据压缩技术。通常我们把数据压缩的过程称为编码,而利用赫夫曼树求得的用于通信的二进制编码称为赫夫曼编码。电报通信是传递文字的二进制码形式的字符串。但在信息传递中,总希望总长度能尽可能短,即采用赫夫曼编码时要用最短码。 1.2存在的问题 怎样才能得到最短的编码?假设每种字符在电文中出现的次数为Wi,编码长度为Li,电文中有n种字符,则电文编码总长度为∑WiLi。若将此对应到二叉树上,Wi为叶结点的权,Li为根结点到叶结点的路径长度。那么∑WiLi恰好为二叉树上带权路径长度。因此,设计电文总长最短的二进制前缀编码,就是以n种字符出现的频率作权,构造一棵赫夫曼树,此构造过程称为赫夫曼编码。 1.3实现的意义 输入一串电文字符:LINEARALGEBRAINTRODUCTIONOFCOMPUTERPASCALLANGUGEMTCROCOMPUTER,实现字符的赫夫曼编码,再对赫夫曼编码生成的字符串进行译码,输出电文字符串。 的新途径的悟性初步培养工程意识和创新能力。让学生们掌握赫夫曼树的建立;赫夫曼编码的生成、以及编码文件的译码是怎样得到的。 2系统分析 2.1设计者的需求分析 本程序包括四个模块,初始化功能模块,建立哈夫曼树的功能模块,建立哈夫曼编码的功能模块,译码的功能模块。初始化功能模块:此模块的功能为用户从键盘输入字符个数n,和n个字符及这n个字符对应的权值。建立哈夫曼树的功能模块:此模块功能为使用初始化模块中得到的相关数据按照哈夫曼。译码的功能模块:此模块功能为接收用户输入需要译码的0、1代码串,按照3中建立的哈夫曼编码规则将其翻译成字符集中的字符所组成的字符串形式存入文件E:\\C程序\\译码.txt,同时将翻译的结果。 2.2用户需求分析 在当今的信息时代,传送时间的效率已引起了人们的广泛关注。因此利用哈夫曼编码进行通信可以大大提高信道利用率,缩短信息传输时间,降低传输成本。要求在发送端通过一个编码系统对待传数据预先编码,在接收端将传来的数据进行译码。此系统具有如下的几个功能:接收原始数据、编码、译码、打印编码规则。因此我们要编码这样的一个系统。 3概要设计 Ⅱ、程序流程图 否 是 4详细设计 4.1赫夫曼树的存储结构描述为: #define n 100 //叶子结点数 #define m 2*n-1 //赫夫曼树中结点总数 typedef struct{ int weight;//权值 int lchild,rchild,parent;//左右孩子及双亲指针 }HTNode; //树中结点类型 typedef HTNode HuffmanTree[m+1]; //0号单元不用 4.2统计字符串的算法 4.2.1选择parent为0且权值最小的两个根结点的算法的定义 void select(HuffmanTree T,int k,int s1,int s2) {//在HT[1...k]中选择parent为0且权值最小的两个根结点,其序号分别为s1和s2,并靠引用参数带回主调函数 int

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档