📄 hufuman.h
字号:
// Hufuman.h: interface for the Hufuman class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HUFUMAN_H__AC572D01_2FC1_416A_A18A_BB96B01F492A__INCLUDED_)
#define AFX_HUFUMAN_H__AC572D01_2FC1_416A_A18A_BB96B01F492A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include<fstream.h>
#define WEIGHT 32676 //最大权值
#define MAX 50 //叶子最大节点数
#define MAXNUM 1000 //节点总数
//霍夫曼编码与解码技术
class Hufuman
{
private:
typedef struct
{
int weight; //权值
int lchild,rchild,parent; //左右孩子及双亲指针
}Node; //树节点类型
typedef Node HuffmanTree[MAXNUM];
typedef struct
{
char ch; //存放编码的字符
char bits[10]; //存放编码的位串
int start; //编码的起始位置
int len; //编码长度
}CodeNode;
typedef CodeNode HuffmanCode[MAX];
int m_num; //叶节点的个数
int m_weight[MAX]; //叶节点权值
int m_char[MAX]; //叶节点字符
HuffmanCode m_hc;
public:
bool compareFile(CString file1,CString file2);
void readHCFile(CString filename);
void creatHCfile();
CString getHc(int i);
int getNum();
CString getScan(int i);
char* CodeToTxt();
char* decode(HuffmanCode hc);
void TxtToCode(char *s);
void Coding(HuffmanCode hc, char *str);
void HuffmanEncoding(HuffmanTree ht, HuffmanCode hc);
void creatHuffmanTree(HuffmanTree ht, HuffmanCode hc, int weight[MAX], int str[MAX]);
int scan(char *s);
void select(HuffmanTree ht,int k, int &s1, int &s2);
Hufuman();
virtual ~Hufuman();
};
#endif // !defined(AFX_HUFUMAN_H__AC572D01_2FC1_416A_A18A_BB96B01F492A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -