hufuman.h

来自「霍夫曼编码与解码」· C头文件 代码 · 共 65 行

H
65
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?