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

📄 lzw.h

📁 几种常用的压缩算法 本程序包含以下功能: 1、 Arithmetic coding 2、 Huffman coding 3、 LZ77 coding 4、 LZ78 coding 5、 L
💻 H
字号:
#ifndef __LZW_H#define __LZW_H#include "Gendef.h"#define	compLT(a, b)	(a->key_word < b->key_word)#define	compEQ(a, b)	(a->key_word == b->key_word)#include "redblack.t"class CLZW{private:	struct tagNode;	struct tagKey;	struct tagKey	{		BYTE	key;		tagNode *node;		tagNode *pnode;		tagKey	*prev;		tagKey	*next;	};	struct tagNode	{		DWORD	key_word;		long	level;		tagKey	nill_key;		tagKey *parent;	} nill;	DWORD LastKey;	DWORD border;	DWORD bits_len;	typedef TRedBlack<tagNode*>	RedBlackNode;	RedBlackNode tree;	private:		// source can`t be more then 2^28 bytes (2^28 = 268435456)		// key-word 0 is predefined for single character		void bitscpy(BYTE *target, long &toffset, BYTE *source, long &soffset, long bitslen);				tagNode *FindKeyWord(DWORD key_word);		tagNode *FindKey(tagNode *node, BYTE key);		tagNode *AddKey(tagNode *node, DWORD key_word, BYTE key);		DWORD GenerateKey();				void DeleteNode(tagNode *node);		void DeleteKey(tagKey *key);		void CleanAll();		void InitTable();				long EncodeOnce(BYTE *target, long &toffset, BYTE *source, long slength, tagNode **last_node);		long DecodeOnce(BYTE *target, BYTE *source, long &soffset, tagNode **last_node);	public:		CLZW();		virtual ~CLZW();				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 + -