课程设计报告1课案.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程设计报告1课案

数据结构课程设计报告 题目: 哈夫曼编码 学 院:山西工商学院 专 业:计算机信息工程学院 学 号:2015220140206 姓 名:郭琪 指导教师: 范智华 2016年月日 班级: 姓名: 学号: 序号 评分项目 满分 实得分 1 学习态度认真、遵守纪律 10 2 设计分析合理性 10 3 设计方案正确性、可行性、创造性 20 4 设计报告的规范性 10 5 设计结果正确性 20 6 答辩验收 30 7 总得分 100 评语: 指导教师签名: 日 期:                   目录 摘 要 1 【关键词】 2 哈夫曼编码 3 一、需求分析 3 二、哈夫曼树 3 三、哈夫曼树的理论创建过程如下: 3 1、构成初始集合 3 2、选取左右子树 3 3、删除左右子树 4 4、重复二和三两步 4 五、解码 4 六、问题及其解决方法 4 结 论 5 参考文献 6 附 录 7 七、运行结果 12 致 谢 14 摘 要 在当今信息爆炸时代,如何采用有效的数据压缩技术来节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视。电报通信是传递文字的二进制码形式的字符串。但在信息传递时,总希望总长度尽可能最短,即采用最短码。利用哈夫曼编码进行信息通信可以大大提高信道利用率,缩短信息传输的时间,减低传输成本。但是,前提要求必须在发送端通过一个编码系统对准备传输的数据进行预先编码,而在接收端将传输来的数据进行译码。本次实例要实现一个简单的哈夫曼编译器。 构造哈夫曼树时,首先将由n个字符形成的n个叶子结点存放到数组HTNode的前n个分量中,然后根据前文介绍的哈夫曼方法的基本思想,不断将两个小子树合并为一个较大的子树,每次构成的新子树的根结点顺序放到HTNode数组中的前n个分量的后面。 【关键词】 哈夫曼树; 编码; 解码; 数据压缩技术; 哈夫曼编码 一、需求分析 利用哈夫曼编码进行通信可以大大提高信道的利用率,缩短信息传输的时间,降低传输成本。根据哈夫曼编码的原理,编写一个程序,在用户输入结点权值的基础上求哈夫曼编码。 要求:从键盘输入若干字符及每个字符出现的频率,将字符出现的频率作为结点的权值,建立哈夫曼树,然后对各个字符进行哈夫曼编码,最后打印输出字符及对应的哈夫曼编码。 二、哈夫曼树 哈夫曼树也称最优二叉树.给定一组具有确定权值的叶子结点,可以构造出不同的二叉树,将其中带权路径长度最小的二叉树称为哈夫曼树.其中,叶子结点的权值(weight)是对叶子结点赋予的一个有意义的数值量.设二叉树具有n个带权值的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度(weighted path length),记为: WPL=Wklk1??n k,wk为第k个叶子结点的权值,lk为从根结点到第k个叶子结点的路径 长度. 三、哈夫曼树的理论创建过程如下: 1、构成初始集合 对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结点,它的左右子树均为空。 2、选取左右子树   在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二叉树的根结点的权值为其左右子树的根结点的权值之和。 3、删除左右子树   从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。 4、重复二和三两步, 重复二和三两步,直到集合F中只有一棵二叉树为止。 四、编码 具体操作: 从叶子结点开始按照所储存的夫结点的信息向上寻找,若该结点是夫结点的左孩子结点将路径记为0,是右孩子将路径记为1。 用临时字符数组cd来存储路径并从后先前存储。 从1找到的夫结点开始继续向上寻找,直到找到根结点,即parent=0结束。 五、解码 具体操作: 以字符串的形式输入编码存于code中。 从根结点开始编码所给的路径依次向下寻找。 直到找到叶子结点为止。 此时,若code=‘\0’,则译码结束,否则继续从根结点开始寻找。 六、 问题及其解决方法 1、编码不熟练,经常出现漏符号或多符号,多次调试改正

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档