Huffman编码和解码

本文介绍了使用C++实现Huffman编码和解码的过程,包括头文件的引用,具体的C++实现代码,以及程序的主执行部分。通过实例展示了如何进行压缩和解压缩操作,并给出了执行结果。
  • 头文件
#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED

typedef short int Bool;

class HuffmanTreeNode{
private:
    float m_weight;
    short int m_parent, m_lchild, m_rchild;
public:
    void SetWeight();
    const float & GetWeight();
    const short int & GetLchild();
    const short int & GetRchild();
    const short int & GetParent();
    void ResetMember(int, int, int);
    void ResetWeight(float);
    void ResetParent(short int);
    void ResetLchild(short int);
    void ResetRchild(short int);
    Bool IsRootNode();
};

class HuffmanCode{
private:
    int m_huffman_node_num; //当前m_huffman_tree_ptr中所以树的结点总个数
    char ** m_char_code;
    HuffmanTreeNode * m_huffman_tree_ptr;
protected:
    void SetCharNum();
    void GetTwoMinWeight(int &, int &);
public:
    HuffmanCode();
    ~HuffmanCode();
    Bool CreatHuffmanTree();
    //int FindRootNode();
    void HuffmanCoding();
    void ShowCharCode();
    void StrHuffmanCoding();
    void StrHuffmanDecoding();
};

#endif // TEST_H_INCLUDED
  • C++实现文件
#include "test.h"
#include <iostream>
#include <cfloat>
#include <cstring>
#include <cstdio>
//设置权重值
void HuffmanTreeNode::SetWeight(){
    std::cin >> m_weight;
}//SetWeight
//获取权重值
const float & HuffmanTreeNode::GetWeight(){
    return m_weight;
}
//获取双亲指针
const short int & HuffmanTreeNode::GetParent(){
    return m_parent;
}
const short int & HuffmanTreeNode::GetLchild(){
    return m_lchild;
}
const short int &am
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值