huffman.h

来自「几种常用的压缩算法 本程序包含以下功能: 1、 Arithmetic cod」· C头文件 代码 · 共 67 行

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