Huffman树的应用

来源:百度知道 编辑:UC知道 时间:2024/05/31 17:27:30
贵求尽快给我编一程序解决以下问题,
根据huffman编码的原理,编写一个程序在用户输入结点 权重的基础上建立它的huffman编码。
要求:a. 约定左分支表示字符‘0‘,右分支表示字符‘1‘;
b. 测试数据:a(11),b(4),c(2),d(5),e(7),其中括号内的数字为结点a,b,c,d,e的权值,输出这5个结点的huffman编码
基于C语言写 用C语言编写一程序以实现以上目的!~~要求先在记事本中写了再把答案粘贴出来 ,谢了~~~

#include<stdio.h>
#define MAX 21
typedef struct
{
char data;
int weight;
int parent;
int left;
int right;
}
huffnode;
typedef struct
{
char cd[MAX];
int start;
}
huffcode;

void main()
{
huffnode ht[2*MAX];
huffcode hcd[MAX],d;
int i,k,f,j,r,n=0,c,m1,m2;
printf("请输入元素个数(1-->%d):",MAX-1);
scanf("%d",&n);
if(n>MAX-1||n<1)
return;
for(i=0;i<n;i++)
{
fflush(stdin);
printf("第%d个元素=>\n\t结点值;",i+1);
scanf("%c",&ht[i].data);
printf("\t权重:");
scanf("%d",&ht[i].weight);
}
for(i=0;i<2*n-1;i++)
ht[i].parent=ht[i].left=ht[i].right=0;
for(i=n;i<2*n-1;i++)
{
m1=m2=0x7fff;
j=r=0;
for(k=0;k<i;k++)
if(ht[k].parent==0)
if(ht[k].weight<m1)
{
m2=m1;
r=j;