//哈弗曼编码的算法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 50//叶子结点的最大值
#define M 2*N-1 //所有结点的最大值
typedef struct
{
int weight;
int parent;
int LChild;
int RChild;
} HTNode,HuffmanTree[M+1];
void select(HuffmanTree ht,int n,int *s1,int *s2) //找权值最小的两个结点
{
int i;
int minn=999999;
int lable1=0,lable2=0;
for(i=1;i<=n;i++)
{
if(ht[i].parent==0 && ht[i].weight<minn)
{
minn=ht[i].weight;
lable1=i;
}
}
*s1=lable1;
minn=999999;
for( i=1;i<=n;i++)
{
if(ht[i].parent==0 && ht[i].weight<minn && lable1 != i)
{
minn=ht[i].weight;
lable2=i;
}
}
*s2=lable2;
}
void CrtHuffmanTree(HuffmanTree ht,int w[],int n) //创建哈夫曼树 w[]里面存放n个结点的权值
{
in
数据结构 树 哈夫曼树及编码 C语言版
最新推荐文章于 2023-12-06 23:47:11 发布
本文展示了如何使用C语言实现哈夫曼树的创建及哈夫曼编码的生成。通过输入叶子节点的个数及其权值,程序会构建哈夫曼树并输出对应的编码。
摘要由CSDN通过智能技术生成