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 + -
显示快捷键?