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

📄 huffman.h

📁 几种常用的压缩算法 本程序包含以下功能: 1、 Arithmetic coding 2、 Huffman coding 3、 LZ77 coding 4、 LZ78 coding 5、 L
💻 H
字号:
#ifndef __HUFFMAN_H#define __HUFFMAN_H#include "Gendef.h"class CHuffman{private:	struct tagNode	{		int		key;				tagNode	*up;		tagNode	*left;		tagNode	*right;	};	struct tagList	{		int		weight;		tagNode	*node;				tagList	*next;		tagList	*prev;	} nill;	struct tagTable	{		BYTE	count;		// count of bits		BYTE	*buf;		// dynamic allocated array of bits	} table[257];		void ListInit(DWORD *w);		// init by list of 256 weights	void ListAddSorted(int weight, tagNode *node);	void ListDelete(tagList *cur);	tagList *ListExtractMin();	int ListIsLast();	int ListIsEmpty();		int RecTableFillBits(tagNode *node, int level = 0);	void BitToStream(int bit, BYTE *strm, int &p, int &o, bool clean = true);	void StreamToBit(int &bit, BYTE *strm, int &p, int &o);	void StreamToStream(BYTE *target, BYTE *source, int bit_len, int &sp, int &so, int &tp, int &to, bool clean = true);	void FreeList();	void FreeNode(tagNode *node);	void FreeTable();	int FindKey(BYTE *buf);		void InitTable(BYTE *buf, long size);	int GetTableLength();	int GetTable(BYTE *buf);	int SetTable(BYTE *buf);	void EncodeHuffman(BYTE *target, long &tlen, BYTE *source, long slen);	long DecodeHuffman(BYTE *target, long &tlen, BYTE *source, long slen);	public:		CHuffman();		virtual ~CHuffman();		void Encode(BYTE *target, long &tlen, BYTE *source, long slen);		long Decode(BYTE *target, long &tlen, BYTE *source, long slen);		long GetMaxEncoded(long len);		long GetMaxDecoded(BYTE *source);

						virtual void OnStep() = 0;};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -