软件设计译码器.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文档。上传文档
查看更多
湖南商学院 《计算机软件设计》课程设计(实习)报告 题 目 哈夫曼编/译码器 姓 名: 学 号: 专 业: 班 级: 指导教师: 职 称: 计算机与电子工程学院 2011年11月 课程设计(实习)评审表 姓 名 学 院 计算机与电子工程学院 学 号 专业班级 题 目 哈夫曼编/译码器 评 审 意 见 评审成绩 指导教师签名 职称 评审时间 年 月 日 课程设计(实习)作品验收表 题目 哈夫曼编/译码器 参与人员 姓 名 班 级 学 号 设计任务与要求: 设计哈夫曼编/译码器系统,实现编码、译码功能。 作品完成情况: 成功运行,实现了编码译码功能。 验收情况: 验收教师签名:___________       年 月 日 注:1. 除“验收情况”栏外,其余各栏均由学生在作品验收前填写。 2. “验收情况”栏由验收小组按实际验收的情况如实填写。 目录 1 课程设计任务与要求 1 1.1 课程设计任务 1 1.2 问题分析 1 2 系统总体设计 4 2.1总体设计思想、设计方案的选择 5 2.2 系统结构图 5 3 系统详细设计 5 3.1 确定所需模块 5 3.2 各子模块功能描述 5 3.3 模块间调用关系 5 4 系统实现与测试 5 4.1系统测试用例的设计 5 4.2系统测试结果 6 5 课程设计总结 6 参考文献 6 附录 6 哈夫曼编/译码器 1 课程设计任务与要求 1.1 课程设计任务 此次课程设计要求设计一个哈夫曼编/译码器,实现如下功能: 一、在本程序中,用户通过键盘进行人机交互,可以在键盘上输入字符集大小,字符可以出现重码,字符输入顺序不受限制。 二、演示程序以用户与计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据(可虑去输入中的非法字符)和运算结果显示在其后。? 三、本演示程序中,当用户选择的功能错误时,系统会输出相应的提示。? 四、在本程序中,用户对给定的原字符串进行编码,对给定的编码串进行译码。 1.2 问题分析 哈夫曼在上世纪五十年代初就提出这种编码时,根据字符出现的概率来构造平均长度最短的编码。它是一种变长的编码。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。在编码中,若各码字长度严格按照码字所对应符号出现概率的大小的逆序排列,则编码的平均长度是最小的。构造好哈夫曼树后,就可根据哈夫曼树进行编码。然而怎样构造一棵哈夫曼树呢?最具有一般规律的构造方法就是哈夫曼算法。字符根据其出现的概率作为权值构造一棵哈夫曼树后,经哈夫曼编码得到的对应的码值。只要使用同一棵哈夫曼树,就可把编码还原成原来那组字符。显然哈夫曼编码是前缀编码,即任一个字符的编码都不是另一个字符的编码的前缀,否则,编码就不能进行翻译。 分析此次设计,是关于实现利用哈夫曼算法编码和译码功能的问题,要求能重复地显示并处理以下项目,即构造哈夫曼树,编码及译码几项功能,直到选择退出为止。本次设计就是为这样的一个哈夫曼的编/译码器。 2 总体设计 2.1总体设计思想、设计方案的选择 哈夫曼编码所以能产生较短的码文,是因为哈夫曼树具有最小加权路径长度的二叉树。如果叶结点的权值恰好是某个需编码的文本中各字符出现的次数,则编码后文本的长度就是该哈夫曼树的加权路径长度。译码过程为自做向右逐一扫描码文,并从哈夫曼树的根开始,将扫到的二进制位串中的相邻位与哈夫曼树上标的0,1相匹配,以确定一条从根到叶子结点的路径,一旦到达叶子,则译出了一个字符。再回到树根,从二进位串的下一位开始继续译码。 2.1.1建立模型 2.1.2数据结构 a. typedef struct { int weight; int parent,lchild,rchild; }HTNode,* HuffmanTree; //动态分配数组存储赫夫曼树?? typedef char **HuffmanCode; //动态分配数组存储赫夫曼编码表 b. int min(HuffmanTree t,int i) // ---------求赫夫曼编码------------- c.

文档评论(0)

word.ppt文档 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档