这个题目怎么做啊??急````````````

来源:百度知道 编辑:UC知道 时间:2024/05/24 20:06:26
假设字符A,B,C,D,E,F使用频率分别是0.07,0.09,0.13,0.221,0.23,0.27,构造哈夫曼编码树(权值小的为左子树,权值大的为右子树)并根据哈夫曼编码树写出A,B,C,D,E,F的哈夫曼编码. 急``````````谁告诉一下 做好 有做的步骤`谢谢`````````”

#include <stdio.h>
#define MAX 1000
#define MAXSYMBS 30
#define MAXNODE 59

typedef struct
{
int weight;
int flag;
int parent;
int lchild;
int rchild;
}huffnode;

typedef struct
{
int bits[MAXSYMBS];
int start;
}huffcode;

main()
{
huffnode huff_node[MAXNODE];
huffcode huff_code[MAXSYMBS],cd;
int i,j,m1,m2,x1,x2,n,c,p;
/* char symbs[MAXSYMBS],symb; */
/*数组huff_node初始化*/
clrscr();
printf("please input the leaf num of tree:\n");
scanf("%d",&n);
for(i=0;i<2*n-1;i++)
{
huff_node[i].weight=0;
huff_node[i].parent=0;
huff_node[i].flag=0;
huff_node[i].lchild=-1;
huff_node[i].rchild=-1;
}

printf("please input the weight of every leaf\n");
for(i=0;i<n;i++)
scanf