根据输入的n个带权结点,构造出哈夫曼树,并且把构造结果输出到屏幕
来源:百度知道 编辑:UC知道 时间:2024/09/22 11:08:06
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#define MAX 0xFFFFFFFF
typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree;
typedef char** HuffmanCode;
int min(HuffmanTree t,int i)
{
int j,flag;
unsigned int k = MAX;
for(j=1;j<=i;j++)
if(t[j].parent==0&&t[j].weight<k)
{
k=t[j].weight;
flag = j;
}
t[flag].parent = 1;
return flag;
}
void select(HuffmanTree h,int i,int &s1,int &s2)
{
int tmp;
s1 = min(h,i);
s2 = min(h,i);
if(s1 > s2)
{
tmp = s1;
s1 = s2;
s2 = tmp;
}
}
void HuffmanCoding(HuffmanTree &HT,HuffmanCode &HC,int *w,int n,int &wpl)
{
int m,i,s1,s2,start