⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hufuman.h

📁 霍夫曼编码与解码
💻 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 + -