#include<iostream>
#include<stdio.h>
#include<stdlib.h> //malloc的头文件,也可以用malloc.h
#include<string>
using namespace std;
int num[26]; //存放个字母出现的次数
char str[50];
typedef struct{ //哈夫曼树的结构体
char ch;
int weight; //权值
int parent,lchild,rchild;
}htnode,*huffmanTree;
typedef char **hfmcode;
void Select(huffmanTree &HT,int n,int *p1,int *p2) //Select函数,选出HT树到n为止,权值最小且parent为-1的2个节点
{
int i,j,x,y;
for(j=0;j<n;++j){
if(HT[j].parent==-1)
{
x=j;break;
}
}
for(i=j+1;i<n;++i){
if(HT[i].weight<HT[x].weight&&HT[i].parent==-1)
{
x=i; //选出最小的节点
}
}
for(j=0;j<n;++j) {
if(HT[j].parent==-1&&x!=j)
{
y=j;break;
}
}
for(i=j+1;i<n;++i)
{