C语言实现哈夫曼编码.doc

C语言实现哈夫曼编码.doc

ID:55631210

大小:15.50 KB

页数:3页

时间:2020-05-21

C语言实现哈夫曼编码.doc_第1页
C语言实现哈夫曼编码.doc_第2页
C语言实现哈夫曼编码.doc_第3页
资源描述:

《C语言实现哈夫曼编码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、/*先根据位权构造一颗哈夫曼树,测试数据0.050.10.150.20.250.25,再从叶子结点到根结点编码。程序结果保存在out.dat中。*/#include#include#include#defineN6typedefstruct{doubleweight;intparent,lchild,rchild;}HuffmanTree;voidSelect(HuffmanTree*HT,inti,int*s1,int*s2){intn,T=0,T1;for(n=1;

2、n

3、fmanTree*p;if(n<=1)return;m=2*n-1;HT[0].weight=10000;w++;for(p=HT+1,i=1;i<=n;++i,++w,++p){p->weight=*w;p->lchild=0;p->rchild=0;p->parent=0;}for(;i<=m;++i,++p){p->weight=0;p->lchild=0;p->rchild=0;p->parent=0;}for(i=n+1;i<=m;++i){Select(HT,i,&s1,&s2);HT[s1].parent=i;H

4、T[s2].parent=i;HT[i].lchild=s1;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;}cd=malloc(n*sizeof(char));cd[n-1]='';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]='1';elsecd[--start]='0';HC[i]=(c

5、har*)malloc((n-start)*sizeof(char));strcpy(HC[i],&cd[start]);}free(cd);}voidmain(){HuffmanTree*HT;inti;char**HC;doublew[N+1];floattemp;FILE*fp1,*fp2;HT=malloc((N)*sizeof(HuffmanTree));HC=malloc((N+1)*sizeof(char*));if((fp1=fopen("in.dat","rb"))==NULL){printf("不能打开文件

6、!");exit(1);}if((fp2=fopen("out.dat","a"))==NULL){printf("不能打开文件!");exit(1);}for(i=1;i<=N;i++){fscanf(fp1,"%f",&temp);w[i]=temp;}fclose(fp1);HuffmanCoding(HT,HC,w,N);for(i=1;i<=N;i++){fprintf(fp2,"%f的Huffman编码为:%s",w[i],HC[i]);}fclose(fp2);printf("编码成功!");}/

7、*文件in.dat内容:0.050.10.150.20.250.25*/

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

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

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