#include<iostream>
#include<string.h>
#define UINT_iMAX 100
using namespace std;
typedef struct {
int weight;
int parent, lchild, rchild;
}HTNode, *HuffmanTree;
typedef char **HuffmanCode;
int Min(HuffmanTree &HT,int i)//用来求出森林中最小的两个节点
{
//在HT[1...i]中选择parent为0且权值最小的结点
//返回该结点的下标值
//此函数被Select函数调用
int j;
unsigned int k = UINT_iMAX;//假设各结点的权值不会超过UINT_MAX
int flag;
for(j = 1; j <= i; ++j)
{
if(HT[j].weight < k && HT[j].parent == 0)//用父结点是否为0来判断此结点是否已经被选过
{
k = HT[j].weight;
flag = j;
}
}
HT[flag].parent = 1;//作个标记,说明已经被选择了,因为在Select函数中要选择权值小的两个结点
return flag;
}
void Select(HuffmanTree &HT, int i, int &s1, int &s2)
{
//在HT[1...i]中选择parent为0且权值最小的两个结点,其序号分别为s1,s2
//s1 <= s2
s1 = Min(HT,i);
s2 = Min(
哈夫曼树数据结构实验报告
最新推荐文章于 2023-11-19 22:06:49 发布