这个程序是根据《数据结构》算法6.12用c语言实现的程序,赫夫曼树就不多说了,直接看代码,代码上都有注释。
下面代码:
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
#define MAX_NUM 100
#define inf 2000000000
using namespace std;
typedef struct {
unsigned int weight;//权值
unsigned int parent,lchild,rchild;//父节点,孩子结点的权值
}HTNode,*HuffmanTree;
typedef char * * HuffmanCode;//二维字符数组
int s1,s2;//最小的两个结点
void Select(HuffmanTree &HT,int x){//选出无父结点,并且权值最小的两个结点,赋值给s1,s2
int i,min1=inf,min2=inf;
for(i=1;i<=x;i++){//找最小
if(HT[i].weight<min1&&HT[i].parent==0){min1=HT[i].weight;s1=i;}
}
for(i=1;i<=x;i++){//找次小
if(HT[i].we