哈夫曼树的编码与译码.doc

哈夫曼树的编码与译码.doc

ID:59299803

大小:32.50 KB

页数:4页

时间:2020-09-06

哈夫曼树的编码与译码.doc_第1页
哈夫曼树的编码与译码.doc_第2页
哈夫曼树的编码与译码.doc_第3页
哈夫曼树的编码与译码.doc_第4页
资源描述:

《哈夫曼树的编码与译码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#include#definen4#definem2*n-1#definemaxval32769typedefstruct{floatweight;intlchild,rchild,parent;charch;}huftree;typedefstruct{charbits[n];intstart;}codetype;codetypecode[n];huftreetree[m];voidhufman(huftreetree[])//创建哈夫曼树{inti,j,p1,p2;charch;floatsmall1,small2,f;for(i=

2、0;i

3、产生n-1个新结点{p1=0,p2=0;small1=maxval;small2=maxval;for(j=0;j<=i-1;j++)//找出权值最小的两个根结点{if(tree[j].parent==0){if(tree[j].weight

4、的新结点为最小权与次小权的双亲tree[p2].parent=i+1;tree[i].lchild=p1+1;tree[i].rchild=p2+1;tree[i].weight=tree[p1].weight+tree[p2].weight;}}voidcreathufcode(codetypecode[])//由哈夫曼数构建哈夫曼编码{inti,c,p;codetypecd;for(i=0;i

5、d.start]='0';}elsecd.bits[cd.start]='1';c=p;p=tree[p-1].parent;}code[i]=cd;}}voiddecode(codetypecode[],huftreetree[])//依次读入电文,根据哈夫曼树译码{inti,b;intflag=-1;i=m-1;printf("请输入电文编码:");scanf("%d",&b);while(b!=flag){if(b==0){i=tree[i].lchild-1;}elsei=tree[i].rchild-1;if(tree[i].lchild==0)//找到叶节点,输出对应字符{pr

6、intf("译码后对应的字符:%c",tree[i].ch);printf("译码后字符对应的权值:%f",tree[i].weight);i=m-1;}scanf("%d",&b);}if(tree[i].lchild!=0)printf("error");}voidmain(){hufman(tree);creathufcode(code);decode(code,tree);}

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

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

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