哈夫曼树资料.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#include stdio.h #include stdlib.h #include string.h #define MAX 100 #define MAXVALUE 10000 ? typedef struct { ????int weight; ????int flag; ????int parent; ????char ch; ????int lchild; ????int rchild; }HafNode; ? typedef struct { ????int bit[MAX]; ????int start; ????int weight; ????char ch; }Code; ? typedef struct { ????char bit[MAX]; ????char ch; ????int weight; }Coding; ? void haffman(int weight[],char ch[],int n,HafNode haffTree[])??//生成哈夫曼树的函数 { ????int i,j,m1,m2,x1,x2; ????for (i=0;i2*n-1;i++) ????{ ???????if(in) ???????{ ???????????haffTree[i].weight=weight[i]; ???????????haffTree[i].ch=ch[i]; ???????} ???????else ???????haffTree[i].weight=0; ???????haffTree[i].parent=-1; ???????haffTree[i].flag=0; ???????haffTree[i].lchild=-1; ???????haffTree[i].rchild=-1; ????} ????for (i=0;in-1;i++) ????{ ???????m1=m2=MAXVALUE; ???????x1=x2=0; ???????for (j=0;jn+i;j++) ???????{ ???????????if (haffTree[j].weightm1haffTree[j].flag==0) ???????????{ ??????????????m2=m1; ??????????????x2=x1; ??????????????m1=haffTree[j].weight; ??????????????x1=j; ???????????} ???????????else if(haffTree[j].weightm2 haffTree[j].flag==0) ???????????{ ??????????????m2=haffTree[j].weight; ??????????????x2=j; ???????????} ???????} ???????haffTree[x1].parent= n + i; ???????haffTree[x2].parent = n + i; ???????haffTree[x1].flag = 1; ???????haffTree[x2].flag = 1; ???????haffTree[n+i].weight = haffTree[x1].weight + haffTree[x2].weight; ???????haffTree[n+i].lchild = x1; ???????haffTree[n+i].rchild = x2; ????} ????FILE *fp; ????fp=fopen(huffman.txt,w+); ????printf(%d/n,n); ????fprintf(fp,%d/n,n); ????for (i=0;in;i++) ???????fprintf(fp,%c %d %d %d/n,haffTree[i].ch,haffTree[i].parent,haffTree[i].lchild,haffTree[i].rchild); ????for (i=n;i2*n-1;i++) ???????fprintf(fp,%d %d %d/n,haffTree[i].parent,haffTree[i].lchild,haffTree[i].rchild);? ????fclose(fp); } ? void HaffmanCode (HafNode haffTree[],int n,Code haffCode[])/*生成哈夫曼编码的函数*/ { ????Code *cd=( Code *) malloc (sizeof (Code)); ????int i,j,child,parent;??? ??

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档