#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
int weight;
int parent;
int left;
int right;
}HuffmanTree;
typedef char * HuffmanCode;
/************************************************************************
函数名称:SelectNode
函数功能:得到前面i-1个结点中权重最小的两个结点,bt1, bt2
函数参数:ht是指向哈夫曼树的指针,n是创建树的叶结点的数量,w用来传入n个叶结点的权值
函数返回:无
************************************************************************/
void SelectNode(HuffmanTree *ht, int n, int * bt1, int * bt2)
{
int i;
HuffmanTree *ht1, *ht2, *t;
ht1 = ht2 = NULL;
for (i = 1; i <= n; i++)
{
if (!ht[i].parent)
{
if (ht1 == NULL)//结点指针1为空
{
ht1 = ht + i;
continue;
}
if (ht2 == NULL)
{
ht2 = ht + i;
if (ht1->weight > ht2->weight)
{
t = ht1;
ht1 = ht2;
ht2 = t;
}
continue;
}
哈夫曼编码
最新推荐文章于 2022-07-24 15:32:47 发布
本文详细介绍了哈夫曼编码的实现过程,包括创建哈夫曼树、为树生成编码、编码和解码字符串的方法。并通过一个示例展示了如何使用哈夫曼编码对字符串进行编码和解码。
摘要由CSDN通过智能技术生成