结构体定义:
typedef struct node{
int data;
int l, r, p;
}HuffmanTree;
1、HufmanTree的建立
void createHuffmanTree(HuffmanTree*& H, int * inArr, int len){
int i, j, min1, min2;
H = (HuffmanTree*)malloc((2 * len - 1)*sizeof(node));
int id1=-1, id2=-1;
for (i = 0; i < len; i++)
H[i].data = inArr[i];
for (i = 0; i < 2 * len - 1; i++)
H[i].l = H[i].r = H[i].p = -1;
for (i = len; i < 2 * len - 1; i++)
{
min1 = min2 = INT_MAX;
for (j = 0; j < i; j++)
{
if (H[j].p == -1)
{
if (H[j].data < min1)
{
if (id1 == -1)
{
id1 = j;
min1 = H[j].data;
}
else{
id2 = id1;
id1 = j;
min2 = min1;
min1 = H[j].data;
}
}
else if (H[j].data < min2)
{
id2 = j;
min2 = H[j].data;
}
}
}
H[i].l = id1, H[i].r = id2;
H[i].da