哈夫曼编码译码器数据结构c语言25074

哈夫曼编码译码器数据结构c语言25074

ID:22311802

大小:40.50 KB

页数:12页

时间:2018-10-28

哈夫曼编码译码器数据结构c语言25074_第1页
哈夫曼编码译码器数据结构c语言25074_第2页
哈夫曼编码译码器数据结构c语言25074_第3页
哈夫曼编码译码器数据结构c语言25074_第4页
哈夫曼编码译码器数据结构c语言25074_第5页
资源描述:

《哈夫曼编码译码器数据结构c语言25074》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、站在新起点,迎接新挑战,创造新成绩。一、需求分析  目前进行快速远距离通信的主要手段是电报即将需传送的文字转化成由二级制的字符组成的字符串例如假设需传送的电文为"ABACCDA"它只有4种字符只需两个字符的串便可以分辨假设A、B、C、D、的编码分别为000110和11则上述7个字符的电文便为"00010010101100"总长14位对方接受时可按二位一分进行译码  当然在传送电文时希望总长尽可能地短如果对每个字符设计长度不等的编码且让电文中出现次数较多的字符采用尽可能短的编码则传送电文的总长便可减少如果设计A、B、C、D的编码分别为000101则上述7

2、个字符的电文可转换成总长为9的字符串"000011010"但是这样的电文无法翻译例如传送过去的字符串中前4个字符的字串"0000"就可以有很多种译法或是"AAAA"或者"BB"或者"ABA"等因此若要设计长短不等的编码则必须是任一字符的编码都不是另一个字符的编码的前缀这种编码称作前缀编码  然而如何进行前缀编码就是利用哈夫曼树来做也就有了现在的哈夫曼编码和译码二、概要设计利用哈夫曼树编/译码(一)、建立哈夫曼树(二)、对哈夫曼树进行编码(三)、输出对应字符的编码(四)、译码过程主要代码实现:structcode//结构体的定义{chara;intw;i

3、ntparent;intlchild;intrchild;};voidcreation(code*pintnintm);//建立哈夫曼树voidcoding(code*pintn);//编码voiddisplay(code*pintnintm);//输出函数voidtranslate(char**hccode*pintn);//译码三、详细设计(一)、建立哈夫曼树(二)、对哈夫曼树进行编码主要代码实现:for(c=if=p[i].parent;f!=0;c=ff=p[f].parent){if(p[f].lchild==c)//左孩子编码为'0'{cd

4、[--start]='0';}else//右孩子编码为'1'{cd[--start]='1';}}(三)、输出对应字符的码字符 编码 a 110 b 111 c 10 d 0 (四)、译码过程主要代码实现:if(strcmp(ahc[i])==0)//比较两个字符串是否相等相等则输出0{for(c=2*n-1j=0;a[j]!='';j++)//从根出发按字符'0'或'1'确定找左孩子或右孩子{if(a[j]=='0')//左孩子{  c=p[c].lchild;}else{c=p[c].rchild;//右孩子}}四、调试分析(一)、数字的输入判

5、断(二)、字母的输入判断(三)、程序是否继续进行的判断五、用户手册(一)、首先根据提示输入初始化数据提示输入一个数字请输入一个数a0

6、一)、初始化(二)、建立哈夫曼树(三)、哈夫曼编码(四)、哈夫曼译码(五)、错误判定附录:源代码:#include#include#include#includestructcode//结构体的定义{chara;intw;intparent;intlchild;intrchild;};voidcreation(code*pintnintm);//建立哈夫曼树voidcoding(code*pintn);//编码voidtranslate(char**hccode*pintn)

7、;//译码voiddisplay(code*pintnintm);//输出函数//主函数voidmain(){intinm;code*ht;printf("字符的数量:(请输入一个大于0的数字输入多个数字则按第一个数字运行)");while(scanf("%d"&n)!=1

8、

9、n<0

10、

11、n>9999){printf("重新输入:");fflush(stdin);}m=2*n-1;//哈夫曼树中没有度为1的结点故含有m=2n-1个结点ht=(code*)malloc((m+1)*sizeof(code));//动态申请内存for(i=1;i<

12、=n;i++)//对1~n的数进行初始化{printf("输入编码中的字符(请输入一个字母):

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

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

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