资源描述:
《哈夫曼树编码&译码系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、哈夫曼编码&译码系统(1)需求分析程序的功能:输入组成编码字母各个叶子的值和权值,建立哈夫曼树并生成哈夫曼编码,且能利用生成的编码对Huffman代码串进行译码,输出相应结果(2)概要设计主要设想模块示意图如下:开始构造haffman树生成haffman编码译码输入str1[];存在相应代码结束NYflag=0YN(3)详细设计哈夫曼树节点的数据类型定义:structnode{charst1[99];charst2[99];floatweight;intparent,lch,rch;};structnodeht[MAX];编码和译码功能:voidcreat(){
2、floatmin1,min2;inti=0,j=0,min11,min22;printf("输入(编码权值),输入0结束:");while(1){printf("编码%d,权值%d:",i,i);j=0;while(1){scanf("%c",&ht[i].st1[j]);if(ht[i].st1[j]==''
3、
4、ht[i].st1[j]=='0')break;j++;}if(ht[i].st1[j]=='0'){ht[i].st1[0]=' ';break;}ht[i].st1[j]=' ';scanf("%f",&ht[i].weight);sc
5、anf("%c",&ht[i].st1[++j]);i++;}n=i;for(i=0;i<2*n-1;i++){ht[i].parent=-1;ht[i].lch=-1;ht[i].rch=-1;ht[i].st2[0]=' ';if(ht[i].st1[0]=='')ht[i].st1[0]=' ';}for(i=n;i<2*n-1;i++){min2=min1=MAX;min11=min22=0;for(j=0;j
6、n1;min11=j;min1=ht[j].weight;}elseif(ht[j].weight7、le(ht[k].parent!=-1){pr=ht[k].parent;if(k==ht[pr].lch)code[i][j]='0';elsecode[i][j]='1';j=j-1;k=pr;}c[i]=j+1;}printf("Thecodeare:");for(i=0;i