- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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;???
??
您可能关注的文档
最近下载
- 2024年4月 全国高等教育自学考试真题 人员素质测评理论与方法 06090.doc VIP
- 路基挡土墙专项施工方案 - 大模板.docx VIP
- 一种可连续工作的氦气纯化器与纯化方法.pdf VIP
- 抢救药品相关试题(附答案).docx VIP
- 施工现场机械设备检查技术规范 JGJ 160-2016知识培训.pptx
- 2017年版2020年修订普通高中语文课程标准解读与培训课件.pptx VIP
- (人教2024版新教材)英语四年级上册Unit4.2 Part A Let’s learn&Match, act and guess课件.pptx
- 2025届高考散文一轮整体复习:写人叙事类散文——《放牛记》全文详解+课件.pptx VIP
- 热力管道工程质量保证措施和体系.pdf VIP
- 黄帝内经的临床医学理论.PPT VIP
文档评论(0)