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

📄 huffmantree.h

📁 Implementation for the Huffman Cod in Visual C++. Both, the encoder and the decoder take as input
💻 H
字号:
#pragma once

#include "windows.h"
#include "wchar.h"
#include "limits.h"

#define SYMBOL_TYPE char
#define SYMBOL_SIZE (sizeof(SYMBOL_TYPE) * 8)
#define SYMBOL_NUMBER (UCHAR_MAX + 1)
//#define SYMBOL_NUMBER 65556

typedef struct nodH
{
	nodH()
	{
		pLeftChild = NULL;
		pRightChild = NULL;
		pParrent = NULL;
		nrAparition = 1;
		symbol = L'';
	}

	nodH *pLeftChild;
	nodH *pRightChild;
	nodH *pParrent;
	unsigned int nrAparition;
	SYMBOL_TYPE symbol;

}NOD_HUFFMAN;

class HuffmanTree
{
public:
	// Constructor
	HuffmanTree(void);

	// Destructor
	~HuffmanTree(void);

public:
	// Insert a symbol	
	void Insert(SYMBOL_TYPE symbol);
	
	// Verify the property of sibling
	void Sibling();

	// Change 2 nods
	void ChangeNods(NOD_HUFFMAN* &nod1, NOD_HUFFMAN* &nod2);

public:
	//Retrurn the root
	NOD_HUFFMAN* GetRoot() const;

		
	friend class Encoder;
private:
	// The Huffman Tree root
	NOD_HUFFMAN* m_pRoot;

	// The Huffman Tree leaves
	NOD_HUFFMAN* m_leaves[SYMBOL_NUMBER];

	unsigned int nrLeaves;
};

⌨️ 快捷键说明

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