huffydict.h
来自「有关huffman的程序对大家学习数据结构有好处但不是所有人都用得上」· C头文件 代码 · 共 65 行
H
65 行
// HuffyDict.h: interface for the HuffyDict class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_HUFFYDICT_H__F4280FED_383D_4F1B_9251_63FD049AC322__INCLUDED_)
#define AFX_HUFFYDICT_H__F4280FED_383D_4F1B_9251_63FD049AC322__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "HuffmanDict.h"
#include "ProgressListener.h"
#include <list>
class HuffyDict : public HuffmanDict
{
public:
HuffyDict();
virtual ~HuffyDict();
//Inherited methods:
EncEntry * GetEncodeDict();
//Custom methods:
void SetUIHelper(ProgressListener *NewProgress) { MyListener=NewProgress; }
void CreateAdaptedDict(FILE *FreqSource);
bool Deserialize(FILE *TableSource);
bool Serialize(FILE *TableTarget);
protected:
EncEntry *MyTable;
private:
struct HNode
{
unsigned int Weight;
unsigned char Symbol;
HNode *Left,*Right,*Parent;
HNode() { Left=Right=Parent=NULL; }
HNode(unsigned int NewSymbol, unsigned int NewWeight)
{
Left=Right=Parent=NULL;
Symbol=NewSymbol; Weight=NewWeight;
}
~HNode() { delete Left; delete Right; }
};
ProgressListener *MyListener;
void FillFreqA(FILE *InFile, unsigned int *OutA);
HNode *BuildHuffTree(unsigned int *FreqA);
void BuildHuffTable(HNode *HTreeRoot, EncEntry *OutTable);
void BuildTableInternal(HNode *HTreeRoot, unsigned int CurrCode, unsigned char CurrCodeLen, EncEntry *OutTable);
void OrderedInsert(std::list<HNode *> &TargetList, HNode *NewNode);
};
#endif // !defined(AFX_HUFFYDICT_H__F4280FED_383D_4F1B_9251_63FD049AC322__INCLUDED_)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?