效果如下:
源程序如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
int weight;
int parent,lchild,rchild;
}HTNode,*HuffmanTree; //动态分配数组存储赫夫曼树
typedef char **HuffmanCode;//动态分配数组存储赫夫曼编码表
void Select(HuffmanTree HT,int n,int &s1,int &s2)
{
int i;
s1=s2=0;
for(i=1;i<=n;i++)
{
if(HT[i].weight<HT[s2].weight&&HT[i].parent==0&&s2!=0)
{
if(HT[i].weight<HT[s1].weight)
{
s2=s1;
s1=i;
}
else
s2=i;
}
if((s1==0||s2==0)&&HT[i].parent==