赫夫曼编码译码器.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文档。上传文档
查看更多
数据结构课程设计 实验题目:赫夫曼编码/译码器 班级网络一班 姓名 学号一 指导老师— 成绩 一、 需求分析 利用赫夫曼编码进行通信可以大大提高信道利用率, 缩短信息传输时间,降低传输成 本。这要求在发送端通过一个编码系统对待传输数据预先编码, 在接收端将传来的数据进行 译码(复原)。对于双工信道(即可以双向传输信息的信道),每端都需要一个完整的编 / 译码系统。试为这样的信息收发站编写一个赫夫曼码的编 /译码系统。 二、 基本要求 基本要求 一个完整的系统应具有以下功能: I :初始化(Initialization )。从终端读入字符集大小 n,以及n个字符和n个权值, 建立赫夫曼树,并将它存于文件 hfmTree中。 E:编码(Encoding )。利用已建好的赫夫曼树(如不在内存,则从文件 hfmTree中 读入),对文件ToBeTran中的正文进行编码,然后将结果存入文件 CodeFile中。 D :译码(Decoding )。利用已建好的赫夫曼树将文件 CodeFile中的代码进行译码, 结果存入文件Textfile中。 2?测试要求 利用教科书例6-2的数据调试程序:已知某系统在通信联络中只可能出现八种字符, 其频率分别”,””,试设计赫夫曼编码。 用下表给出的字符集和频度的实际统计数据建立赫夫曼树, 并实现以下报文的编码 和译码:“THIS PROGRAME IS MY FAVORITE ”。 字符 A B C D E F G H I J K ZL M 频度 186 64 13 22 32 103 21 15 47 57 1 / 5 32 20 字符 N O P Q R S T U V W , X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1 3.实现提示 编码结果以文本方式存储在文件 Codefile中。 用户界面可以设计为“菜单”方式:显示上述功能符号,再加上“ Q”,表示退出运 行Quit。请用户键入一个选择功能符。此功能执行完毕后再显示此菜单, 直至某次用户选择 了 “ Q”为止。 在程序的一次执行过程中,第一次执行 I, D或C命令之后,赫夫曼树已经在内存 了,不必再读入。每次执行中不一定执行 I命令,因为文件hfmTree可能早已建好。 三、 概要设计 程序主要分为五部分,哈夫曼节点的定义,哈夫曼编码的定义, Select函数 选择出权值最小的节点,Initialization函数生成哈夫曼树,主函数。 四、 详细设计 数据存储结构设计 哈夫曼节点 哈夫曼节点数据类型如下,包含字符,权值,父节点,左右孩子: typedef struct{ char ch; un sig ned int weight; un sig ned int pare nt,lchild,rchild; }HTNode,*HfmTree; 哈夫曼编码 哈夫曼编码用二级指针存储,动态分配空间 : typedef char **HfmCode; 算法的设计思想 (1) Select 函数 void Select(HfmTree HT,int a,int s1,int s2){ aren t!=0); s1=i; while(HT[++i].pare nt!=0); s2=i++; if(HT[s1].weightHT[s2].weight){ temp=s1; s仁 s2; s2=temp; } for(;i=a;i++){ if(HT[i].pare nt==O) if(HT[i].weightHT[s1].weight) s1=i; else if(HT[i].weightHT[s2].weight) s2=i; } }h=ch[i-1]; HT[i].weight=w[i-1]; HT[i].pare nt=O; HT[i].lchild=O; HT[i].rchild=O; }h=0; HT[i].weight=0; HT[i].pare nt=O; HT[i].lchild=0; HT[i].rchild=0; }are nt=i; HT[s2].pare nt=i; HT[i].lchild=s1; HT[i].rchild=s2; \ HT[i].weight=HT[s1].weight+HT[s2].weight; } HC=(HfmCode)malloc(( n+1)*sizeof(char*)); cd=(char*)malloc( n*sizeof(char)); cd[ n-1]=\0; for(i=1;i=n; i++){ start=n-1; for(c=i,f=HT[i].pare nt;f!=O;c=f,f=HT[f].pare nt){ if(HT[f].l

文档评论(0)

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

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

1亿VIP精品文档

相关文档