- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电文的编码和译码数据结构课设计报告
数据结构
课
程
设
计
报
告
项目名称: 姓名 班级名称: 专业名称: 完成时间: 计算机与信息工程学院制
目 录
目录
一、 选题介绍 3
二、 运行结果分析 3
三、 算法设计的思想 3
四、 所遇到的问题及处理方案 3
五、 总结 4
选题介绍
总体描述
A.电文的编码和译码栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈也称为后进先出表。电文的编码和译码textBox1中输入即将发送的电文字符串(textBox1.Text)
2)输出字符编码(textBox2)及电文编码(textBox3)
3)在textBox4中输入对应电文的编码
4)输出译码(textBox5)
5)若输入的编码不在电文对应编码中,返回错误提示
B.利用栈判断数学式中括号是否匹配
1)输入一个数学式(可包含小括号和中括号)
2)判断括号是否匹配
运行结果分析
1.运行界面
A.电文的编码和译码
3)不匹配
情况一:括号不成对出现”(/ [ / ] / )”
情况二:优先级错误 “([ ])”
C.进制转换
算法设计的思想
简单介绍一下是如何实现的,算法的设计思想
算法的流程图
1.算法设计的思想
A.电文的编码与译码
总体用的是树的应用中哈夫曼编码的思想。首先将用户输入的字符串按顺序建立连接,并计算每个不同字符的出现频率作为叶子节点,再将字符以频率从小到大排序。接着将两个最小数相加,用他们的和与后面的数比较,利用循环每次选出两个最小的叶子节点,求和,将和加入到树中,并把做过运算的叶子节点从列表中移除。生成哈夫曼树后进行编码:左孩子为“0”,右孩子为“1”。显示每个字符对应的编码以及字符串整体的编码。下面输入与电文对应的编码,将其与字符编码逐个比较,完全对应则输出译文,不对应则返回“输入错误”。
B.利用栈判断数学式中括号是否匹配
建立一个栈,有左括号时,将其入栈,遇到右括号则出栈,栈中元素为空则匹配;无左括号时,右括号单独存在,则不匹配。
C.十进制数转换成其他进制
进制转换的主要思想为:将十进制数除以要转化的进制,均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。
B.利用栈判断数学式中括号是否匹配
所遇到的问题及处理方案
A.电文的编码与译码
1.字符出现次数,每个字符出现频率未知,需要计算,计算后也要调用。在Addsign方法中写入循环判断语句while (tmp != null)
{
if (tmp.data.GetSign() == str)
{
tmp.data.IncFreq();
return;
}
tmp = tmp.link
2.排序后求和再比较的问题
Node p = first;
while (!(p.link == null)) {
if ((p.data.GetFreq() = hTemp.GetFreq())
(p.link.data.GetFreq() = hTemp.GetFreq()))
break;
p = p.link;
}
eTemp.link = p.link;
p.link = eTemp;
总结
工作时间(5号黑色)
6.30:C#“数学式中括号是否匹配”
栈的应用
7.1:C#“十进制转换成其他进制数”、数学式子的运算
栈
7.2-7.4:课程设计:电文的编码与译码
选课题;复习哈夫曼编码;输入代码并调试程序(大部分时间);
心得体会
经过这一个星期的《数据结构》课程,我对程序的编译知识加深了许多。主要体现在栈的应用和树的应用。利用栈的后进先出原理,我们可以解决判断括号匹配问题,进制转换问题和算式问题等等。除此之外,我深刻的了解了二叉树中哈夫曼树的构造步骤,它应用于电文的编码译码。这一周的学习,我捡回很多之
文档评论(0)