哈夫曼树及哈夫曼编码译码的实现_第1页
哈夫曼树及哈夫曼编码译码的实现_第2页
哈夫曼树及哈夫曼编码译码的实现_第3页
哈夫曼树及哈夫曼编码译码的实现_第4页
哈夫曼树及哈夫曼编码译码的实现_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、哈夫曼树及哈夫曼编码译码的实现程序如下:#includestdio.h#includestring.h#includeconio.h#includestdlib.hint maxline=0;char xx5080;int l,L;typedef struct /*定义结构体*/ int weight;int parent;int lchild,rchild;tree;tree b57;int ReadDat(void) FILE *fp;int i=0;char *p;if(fp=fopen(in.txt,r)=NULL)return 1;while(fgets(xxi,80,fp)!=NU

2、LL) p=strchr(xxi,n);if(p)*p=0;i+;maxline=i;fclose(fp);return 0;int pinlv(int a)int i,j;int L;for(i=0;imaxline;i+)L=strlen(xxi); for(j=0;j=97&xxij=122) axxij-97+;elseif(xxij=32)a26+;elseif(xxij=44)a27+;elseif(xxij=46)a28+;smax(int a,int low,int high,int max) int mid,M2,N2;mid=(high+low)/2;if(high-low

3、=1)if(alowahigh) max0=low;max1=high;else max0=high;max1=low;elseif(high-low=0)max0=high;max1=57;else smax(a,low,mid,max);M0=max0;M1=max1;smax(a,mid+1,high,max);N0=max0;N1=max1;if(aM0=aN0&aM1=aN0)max0=M0;max1=M1;elseif(aM0aN0)max0=M0;max1=N0;elseif(aM0aN0&aM0aN0&aM0aN1)max0=N0;max1=N1;bhtree(int a) i

4、nt i,j;int max2;int c58=0;c57=4000;l=0;for(i=0;i29;i+) if(ai!=0)bi.weight=ai;bi.lchild=0;bi.rchild=0;ci=ai;l+;elseif(ai=0)bi.weight=ai;bi.lchild=0;bi.rchild=0;ci=4000;for(i=29;i29+l-1;i+)smax(c,0,i-1,max);cmax0=4000;cmax1=4000;bi.weight=bmax0.weight+bmax1.weight;bi.lchild=max0;bi.rchild=max1;bmax0.p

5、arent=i;bmax1.parent=i;ci=bi.weight;bma(int i,int j,int n,int M) int t;t=bn.parent;if(n=29+l-2)Mj=2;elseif(n=bt.lchild)Mj=0;n=t;bma(i,j+1,n,M);elseif(n=bt.rchild)Mj=1;n=t;bma(i,j+1,n,M);main() int a29=0;int i,j,n,k=0,p;int m2910;int M10;FILE *fp;clrscr();for(i=0;i29;i+) for(j=0;j10;j+) mij=3;ReadDat

6、();pinlv(a);bhtree(a);fp=fopen(out.txt,w);for(i=0;imaxline;i+) L=strlen(xxi); for(j=0;jL;j+) fprintf(fp,%c,xxij);fprintf(fp,n);for(i=0;i29;i+) if(ai!=0)for(p=0;p10;p+)Mp=3;k=0;n=i;j=0;bma(i,j,n,M);for(p=0;p10;p+)if(Mp=0;p-)mik-1-p=Mp;for(i=0;i26;i+)if(ai!=0)fprintf(fp,%c:,97+i);for(j=0;j10;j+)if(mij

7、2)fprintf(fp,%d,mij);fprintf(fp,n);if(a26!=0) fprintf(fp,:);for(j=0;j10;j+)if(m26j2) fprintf(fp,%d,m26j);fprintf(fp,n);if(a27!=0) fprintf(fp,:);for(j=0;j10;j+)if(m27j2)fprintf(fp,%d,m27j);fprintf(fp,n);if(a28!=0)fprintf(fp,.:);for(j=0;j10;j+)if(m28j2)fprintf(fp,%d,m28j);fprintf(fp,n);for(i=0;imaxline;i+)L=strlen(xxi); for(j=0;j=97&xxij=122) k=xxij-97; for(p=0;p10;p+)if(mkp2) fprintf(fp,%d,mkp); elseif(xxij=32) for(p=0;p10;p+)if(m26p2) fprintf(fp,%d,m26p);elseif(xxij=44) for(p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论