电文的编码和译码数据结构课程设计报告.docVIP

电文的编码和译码数据结构课程设计报告.doc

  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文档。上传文档
查看更多
数据结构 课 程 设 计 报 告 项目名称: 姓名 班级名称: 专业名称: 完成时间: 计算机与信息工程学院制 目 录 目录 TOC \o 1-3 \h \z \u 一、 选题介绍 3 二、 运行结果分析 3 三、 算法设计的思想 3 四、 所遇到的问题及处理方案 3 五、 总结 4 选题介绍 总体描述 A.电文的编码和译码 在当今信息爆炸时代,如何采用有效的数据压缩技术节省数据文件的存储空间和计算机网络的传送时间已越来越引起人们的重视,哈夫曼编码正是一种应用广泛且非常有效的数据压缩技术。哈夫曼编码是一种编码方式,以哈夫曼树—即最优二叉树,带权路径长度最小的二叉树,经常应用于数据压缩。哈夫曼编码使用一张特殊的编码表将源字符(例如某文件中的一个符号)进行编码。这张编码表的特殊之处在于,它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。哈夫曼编码的应用很广泛,利用哈夫曼树求得的用于通信的二进制编码称为哈夫曼编码。树中从根到每个叶子都有一条路径,对路径上的各分支约定:指向左子树的分支表示“0”码,指向右子树的分支表示“1”码,取每条路径上的“0”或“1”的序列作为和各个叶子对应的字符的编码,这就是哈夫曼编码。哈夫曼译码输入字符串可以把它编译成二进制代码,输入二进制代码时可以编译成字符串。 B.栈 栈是允许在同一端进行插入和删除操作的特殊 线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为 进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。计算算式、进制转换和括号匹配问题都是栈的应用 功能描述 A.电文的编码和译码 1)在textBox1中输入即将发送的电文字符串(textBox1.Text) 2)输出字符编码(textBox2)及电文编码(textBox3) 3)在textBox4中输入对应电文的编码 4)输出译码(textBox5) 5)若输入的编码不在电文对应编码中,返回错误提示 B.利用栈判断数学式中括号是否匹配 1)输入一个数学式(可包含小括号和中括号) 2)判断括号是否匹配 运行结果分析 1.运行界面 A.电文的编码和译码 1)输入电文 2)点击第一个转化按钮,输出字符编码和电文编码 3)输入编码 4)按第二个转化按钮,输出译码 5)输入的编码超出范围 B.利用栈判断数学式中括号是否匹配 1)输入一个数学式 2)匹配则为match 3)不匹配 情况一:括号不成对出现”(/ [ / ] / )” 情况二:优先级错误 “([ ])” C.进制转换 算法设计的思想 简单介绍一下是如何实现的,算法的设计思想 算法的流程图 1.算法设计的思想 A.电文的编码与译码 总体用的是树的应用中哈夫曼编码的思想。首先将用户输入的字符串按顺序建立连接,并计算每个不同字符的出现频率作为叶子节点,再将字符以频率从小到大排序。接着将两个最小数相加,用他们的和与后面的数比较,利用循环每次选出两个最小的叶子节点,求和,将和加入到树中,并把做过运算的叶子节点从列表中移除。生成哈夫曼树后进行编码:左孩子为“0”,右孩子为“1”。显示每个字符对应的编码以及字符串整体的编码。下面输入与电文对应的编码,将其与字符编码逐个比较,完全对应则输出译文,不对应则返回“输入错误”。 B.利用栈判断数学式中括号是否匹配 建立一个栈,有左括号时,将其入栈,遇到右括号则出栈,栈中元素为空则匹配;无左括号时,右括号单独存在,则不匹配。 C.十进制数转换成其他进制 进制转换的主要思想为:将十进制数除以要转化的进制,均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。 程序思想:记录每次得到的商,并将余数入栈,知道商为0时,取出栈中元素。 2.流程图 A.电文的编码与译码 输入字符串开始 输入字符串 开始 建立哈夫曼树 生成哈夫曼编码 输出编码 输入对应编码 输出译码 B.利用栈判断数学式中括号是否匹配 开始 开始 输入带括号的数学式 a是否为左括号或右括号 取出元素a;a++ 将a入栈 出栈 判断栈是否为空 左括号 右括号 不匹配,输出“not match” 匹配,输出“macth” 否 栈中元素是否为空 所遇到的问题及处理方案 A.电文的编码与译码 1.字符出现次数,每个字符出现频率未知,需要计算,计算后也要调用。在Addsign方法中写入循环判断语句while (tmp !

文档评论(0)

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

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

1亿VIP精品文档

相关文档