根据哈夫曼树构建哈夫曼编码

实验题:构造哈夫曼树生成哈夫曼编码
编写一个程序,构造一棵哈夫曼树,输出对应的哈夫曼编码和平均查找长度,并对下表(所示的数据进行验证。

单词及出现的频度
单词: The of a to and in that he is at on for His are be
频度 :1192 677 541 518 462 450 242 195 190 181 174 157 138 124 123

#include <iostream>
#define N 50
#define M 2*N-1
using namespace std;
//哈夫曼树结点定义
typedef struct
{
   
    string data;
    double weight;
    int parent;
    int lchild;
    int rchild;
}HTNode;
//哈夫曼编码结点定义
typedef struct
{
   
    char cd[N];
    int start;
}HCode;
//创建哈夫曼树
void CreateHT(HTNode ht[], int n)
{
   
    int i, k, lnode, rnode;
    double min1, min2;//min1用于记录较小的那个结点,min2记录较大的那个
    for (i = 0; i < 2 * n - 1; i++)//初始化结点
    {
   
        ht[i].parent = ht[i].lchild = ht[i].rchild = -1;
    }
    for (i = n; i < 2 * n - 
  • 15
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值