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

📄 compressing.h

📁 Huffman/RLE archivator
💻 H
字号:
#include <queue>
//using namespace std;

//////////////////////////////////////////////////////////////////////////


struct TNode
{
	TNode *parent;
	TNode *left;
	TNode *right;
	bool real;
	unsigned int rate;
	unsigned char name;
};

struct SymbolInfo
{
	unsigned long long mask;
	int length;
	unsigned int rate;
};



struct TNodeCompare
{
	bool operator() (TNode* a, TNode* b)
	{
		return (a->rate > b->rate);
	}
};

typedef  std::priority_queue<TNode*, std::vector <TNode*>, TNodeCompare> TQueue;

//////////////////////////////////////////////////////////////////////////

void CompressHuffman(CString fileName, CString archName);
void DecompressHuffman(CString archName, CString fileName);
void InitQueue(TQueue *myQueue, SymbolInfo symbols[256], int *speciesCount);
void InitNode(TNode* newNode, unsigned char name, unsigned int rate, 
			  TNode *parent, TNode *left, TNode *right);
void TreeForm(TQueue *myQueue);
void TreeRun(SymbolInfo symbols[256], TNode *curNode, unsigned long long mask, int length);
void WriteRatesToFile(FILE *file, SymbolInfo symbols[256], int count);
void WriteBytesToFile(FILE *in, FILE *out, SymbolInfo symbols[256]);

void ReadBytesFromArch(FILE *in, FILE *out, TNode *tree ,unsigned long long totalBytes);
void ReadRatesFromArch(FILE *file, SymbolInfo symbols[256]);

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

void CompressRLE(CString fileName, CString archName);
void DecompressRLE(CString archName, CString fileName);

⌨️ 快捷键说明

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