赫夫曼树与赫夫曼编码
#include<iostream>
#include<string.h>
using namespace std;
typedef struct
{
unsigned int weight;
unsigned int parent,lchild,rchild;
}HTNode,*HuffmanTree; // 存储赫夫曼树:
typedef char **HuffmanCode; // 存储赫夫曼编码表
//返回 i 个结点中权值最小的树的根结点序号
int min(HuffmanTree t,int i){
int j,flag;
unsigned int k=UINT_MAX; // 取 k 为不小于可能的值(无符号整型最大值)
for(j=1;j<=i; j++)
if(t[j].weight<k &&t[j].parent==0) // t[j]是树的根结点
{
flag=j; //结点序号
}
t[flag].parent=1;
return flag;
}
void CreatHuffmanCode(HuffmanTree HT, HuffmanCode &HC, int n);
void CreatHuffmanTree(HuffmanTree &HT,int n);
void Select(HuffmanTree t,int i,int &s1,int &s2){
int j;
s1=min(t,i); //结点序号
s2=min(t,i); //结点序号
if(s1>s2){
j=s1;
s1