软件设计译码器

软件设计译码器

ID:40972651

大小:438.50 KB

页数:23页

时间:2019-08-12

软件设计译码器_第1页
软件设计译码器_第2页
软件设计译码器_第3页
软件设计译码器_第4页
软件设计译码器_第5页
资源描述:

《软件设计译码器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、湖南商学院《计算机软件设计》课程设计(实习)报告题 目哈夫曼编/译码器姓名:学号:专业:班级:指导教师:职称:计算机与电子工程学院2011年11月课程设计(实习)评审表姓名学院计算机与电子工程学院学号专业班级题目哈夫曼编/译码器评审意见评审成绩指导教师签名职称评审时间年月日课程设计(实习)作品验收表题目哈夫曼编/译码器参与人员姓名班级学号设计任务与要求:设计哈夫曼编/译码器系统,实现编码、译码功能。作品完成情况:成功运行,实现了编码译码功能。验收情况:验收教师签名:___________    

2、  年月日注:1.除“验收情况”栏外,其余各栏均由学生在作品验收前填写。2.“验收情况”栏由验收小组按实际验收的情况如实填写。目录1课程设计任务与要求11.1课程设计任务11.2问题分析12系统总体设计42.1总体设计思想、设计方案的选择52.2系统结构图53系统详细设计53.1确定所需模块53.2各子模块功能描述53.3模块间调用关系54系统实现与测试54.1系统测试用例的设计54.2系统测试结果65课程设计总结6参考文献6附录6哈夫曼编/译码器1课程设计任务与要求1.1课程设计任务此次课程设

3、计要求设计一个哈夫曼编/译码器,实现如下功能:一、在本程序中,用户通过键盘进行人机交互,可以在键盘上输入字符集大小,字符可以出现重码,字符输入顺序不受限制。二、演示程序以用户与计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,相应的输入数据(可虑去输入中的非法字符)和运算结果显示在其后。 三、本演示程序中,当用户选择的功能错误时,系统会输出相应的提示。 四、在本程序中,用户对给定的原字符串进行编码,对给定的编码串进行译码。1.2问题分析哈夫曼

4、在上世纪五十年代初就提出这种编码时,根据字符出现的概率来构造平均长度最短的编码。它是一种变长的编码。哈夫曼编码应用广泛,如JPEG中就应用了哈夫曼编码。在编码中,若各码字长度严格按照码字所对应符号出现概率的大小的逆序排列,则编码的平均长度是最小的。构造好哈夫曼树后,就可根据哈夫曼树进行编码。然而怎样构造一棵哈夫曼树呢?最具有一般规律的构造方法就是哈夫曼算法。字符根据其出现的概率作为权值构造一棵哈夫曼树后,经哈夫曼编码得到的对应的码值。只要使用同一棵哈夫曼树,就可把编码还原成原来那组字符。显然哈夫

5、曼编码是前缀编码,即任一个字符的编码都不是另一个字符的编码的前缀,否则,编码就不能进行翻译。分析此次设计,是关于实现利用哈夫曼算法编码和译码功能的问题,要求能重复地显示并处理以下项目,即构造哈夫曼树,编码及译码几项功能,直到选择退出为止。本次设计就是为这样的一个哈夫曼的编/译码器。2总体设计2.1总体设计思想、设计方案的选择哈夫曼编码所以能产生较短的码文,是因为哈夫曼树具有最小加权路径长度的二叉树。如果叶结点的权值恰好是某个需编码的文本中各字符出现的次数,则编码后文本的长度就是该哈夫曼树的加权路

6、径长度。译码过程为自做向右逐一扫描码文,并从哈夫曼树的根开始,将扫到的二进制位串中的相邻位与哈夫曼树上标的0,1相匹配,以确定一条从根到叶子结点的路径,一旦到达叶子,则译出了一个字符。再回到树根,从二进位串的下一位开始继续译码。2.1.1建立模型2.1.2数据结构a.typedefstruct{intweight;intparent,lchild,rchild;}HTNode,*HuffmanTree;//动态分配数组存储赫夫曼树  typedefchar**HuffmanCode;//动态分配

7、数组存储赫夫曼编码表b.intmin(HuffmanTreet,inti)//---------求赫夫曼编码-------------c.voidselect(HuffmanTreet,inti,int&s1,int&s2)//----slect函数----d.voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn)//w存放n个字符的权值(均>0),构造赫夫曼树HT,并求出n个字符的赫夫曼编码HCe.voidInitializati

8、on()//----------初始化赫夫曼链表--------------f.voidInputCode()//---------获取报文并写入文件-------------g.voidEncoding()//----------------编码函数------------------h.voidDecoding()//-----------------译码函数-----------------i.voidCode_printing()//-------------打印编码的函数-------

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。