哈夫曼编码译码系统(c/c++)

哈夫曼编码译码系统的实现,主要包含三部分:

1、创建哈夫曼树

2、编码函数

3、译码函数

编写代码时为了方便,在这里混用了c++的输入输出流。主体用c语言实现。

下面是代码部分:

1、头文件,以及储存结构:

#include<stdio.h>
#include<iostream>
using namespace std;
#define MAX 2000
typedef char ElemType;
typedef struct{
   
ElemType data;
int w;
int parent,lchild,rchild;
}HFMTNode;

2、哈夫曼树的创建,Ht储存全部节点的权值,n代表叶子节点数量。

void menu(HFMTNode Ht [],int n);//原型声明 
void CreatHFMTree(HFMTNode Ht[],int n)//创建哈夫曼树 
{
   
    int i,j,k,lmin,rmin;
    int min1,min2,m1;
    for(i=1;i<2*n;i++)
    {
   
        Ht[i].parent=Ht[i].lchild=Ht[i].rchild=-1;
    }
    for(i=n+1;i<2*n;i++)
    {
   
        min1=min2=MAX;
        lmin=rmin=-1;
        for(k=1;k<i;k++)
        {
   
            if(Ht[k].parent==-1)//只在尚未构造的二叉树节点中运行 
            {
   
                if(Ht[k].w<min1)
                {
   
                    min2=min1;
                    rmin=lmin;
                    min1=Ht[
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值