全文预览

实验七哈夫曼编码

上传者:菩提 |  格式:doc  |  页数:6 |  大小:70KB

文档介绍
oc(n*sizeof(char)); //分配求当前编码的工作空间 cd[n-1]='\0'; //从右向左逐位存放编码,首先存放编码结束符 for(i=1; i<=n; i++) //求 n个叶子结点对应的哈夫曼编码{ start=n-1; //初始化编码起始指针 for(c=i,p=(*ht)[i].parent; p!=0; c=p,p=(*ht)[p].parent) // 从叶子到根结点求编码 if( (*ht)[p].LChild==c) cd[--start]='0'; //左分支标 0 else cd[--start]='1'; //右分支标 1 hc[i]=(char *)malloc((n-start)*sizeof(char)); //为第 i个编码分配空间 strcpy(hc[i],&cd[start]); } free(cd); for(i=1; i<=n; i++) printf("HuffmanCode of %3d is %s\n",(*ht)[i].weight,hc[i]); printf("\n"); } void main() { HuffmanTree HT; HuffmanCode HC; int *w,i,n,wei,m; printf("\nn =" ); scanf("%d",&n); w=(int *)malloc((n+1)*sizeof(int)); printf("\ninput the %d element's weight:\n",n); for(i=1; i<=n; i++) { printf("%d: ",i); fflush(stdin); scanf("%d",&wei); w[i]=wei; } CrtHuffmanTree(&HT,w,n); CrtHuffmanCode(&HT,&HC,n); }

收藏

分享

举报
下载此文档