c语言实现构造哈夫曼树
输入字符和权值,实现哈夫曼树的构造
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXSIZE 50
typedef char DataType;
typedef struct // 哈夫曼树结点的结构
{
DataType data; // 数据用字符表示
int weight; // 权值
int parent; // 双亲
int lchild,rchild; // 左右孩子
} HuffNode;
typedef struct // 哈夫曼编码的存储结构
{
DataType cd[MAXSIZE]; // 存放编码位串
int start; // 编码的起始位置
} HuffCode;
void HuffmanCreate(HuffNode *ht,int n)
{
int i,j,p1,p2,m1,m2;
for(i=1;i<=n;i++)
{
getchar(); // 接收回车
printf("哈夫曼树第%d个字符及其权重分别为(用空格分隔)""\n",i);
scanf("%c %d",&ht[i].data,&ht[i].weight);
}
for(i=1;i<=2*n -1;i++) // 对数组初始化
ht[i].parent=ht[i].lchild=ht[i].rchild=