静态存储哈弗曼

静态存储哈弗曼

ID:38476073

大小:28.50 KB

页数:3页

时间:2019-06-13

静态存储哈弗曼_第1页
静态存储哈弗曼_第2页
静态存储哈弗曼_第3页
资源描述:

《静态存储哈弗曼》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include#include#includetypedefstruct{intweight;intparent,lchild,rchild;}HTnode,*Huffmantree;typedefchar**Huffmancode;voidselect(HuffmantreeHT,intk,int*s1,int*s2){//赫夫曼树HT中选paren为0且权值最小的两结点,s1,s2inti,j=1,min,e;while(HT[j].parent!=0)j

2、++;if(j>k){printf("无空闲结点!");exit(0);}elsemin=HT[j].weight;for(i=1;i<=k;i++)if((HT[i].weight

3、

4、j==*s1)j++;if(j>k){printf("无空闲结点!");exit(0);}elsemin=HT[j].weight;for(i=1;i<=k;i++)i

5、f((HT[i].weight

6、zeof(HTnode));//0号单元未用for(p=*HT+1,i=1;i<=n;i++,++p){(*p).weight=w[i];printf("HT[%d].weight=%d",i,(*p).weight);(*p).lchild=0;(*p).parent=0;(*p).rchild=0;}for(;i<=m;i++,++p){(*p).weight=0;(*p).lchild=0;(*p).parent=0;(*p).rchild=0;}for(i=n+1;i<=m;++i){select(*HT,

7、i-1,&s1,&s2);(*HT)[s1].parent=i;(*HT)[s2].parent=i;(*HT)[i].lchild=s1;(*HT)[i].rchild=s2;(*HT)[i].weight=(*HT)[s1].weight+(*HT)[s2].weight;printf("HT[%d]andHT[%d]-->HT[%d].weight",s1,s2,i,(*HT)[i].weight);}*HC=(Huffmancode)malloc((n+1)*sizeof(char*));char*cd;c

8、d=(char*)malloc(n*sizeof(char));cd[n-1]='';printf("HuffmanTreeCodeisasfollows:");for(i=1;i<=n;++i){start=n-1;for(c=i,f=(*HT)[i].parent;f!=0;c=f,f=(*HT)[f].parent)if((*HT)[f].lchild==c)cd[--start]='0';elsecd[--start]='1';(*HC)[i]=(char*)malloc((n-start)*sizeof(

9、char));strcpy((*HC)[i],&cd[start]);printf("HT[%d].weight=%dnode'sHuffmancodeis:%s",i,(*HT)[i].weight,(*HC)[i]);}free(cd);printf("");}voidmain(){HuffmantreeHT;HuffmancodeHC;intw[20],i,n;w[0]=0;printf("静态存储方式输入编码个数n=");scanf("%d",&n);printf("输入结点值:");for

10、(i=1;i<=n;i++)scanf("%d",&w[i]);Huffmancoding(&HT,&HC,w,n);}

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

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

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