(4)输出Huffman编码
void HuffmanCode(HCodeType HuffCode[MAXLEAF], int n)
{
HCodeType cd; //定义一个临时变量存放求解编码时的信息
int c, p;
for (int i = 0; i < n; i++)
{
cd.start = n - 1;
c = i;
p = HuffNode[c].parent;
while (p!=-1)
{
if (HuffNode[p].lchild == c)
cd.bit[cd.start] = 0;
else
cd.bit[cd.start] = 1;
cd.start--; //前移一位
c = p;
p = HuffNode[c].parent; //设置下一循环条件
}
/*把叶子结点的编码信息从临时编码cd中复制出啦,放入编码结构体数组*/
for (int j = cd.start + 1; j < n; j++)
HuffCode[i].bit[j] = cd.bit[j];
HuffCode[i].start = cd.start;
}
}