www.pudn.com > huffman_.zip > huffman_a.h


#ifndef _HUFFMAN_A_HEADER_001_
#define _HUFFMAN_A_HEADER_001_

#include "huffman_base.h"

#include 
using namespace std;

// 使用链表结构生成Huffman树的算法,这是最基本的实现方法,效率最低

class huffman_a :
	public huffman_base
{
public:
	huffman_a() {}	
	virtual ~huffman_a(void) {}

public:
	typedef struct HTNode_T
	{
		unsigned long weight;
		HTNode_T* parent;
		HTNode_T* lchild;
		HTNode_T* rchild;
	}HTNode, *HuffmanTree;

public:
	void generate_codes(int num, const unsigned long* weights);

protected:
	// 在s[0..n]中选择weight最小且parent为NULL的两个,返回其位置iterator
	void select(HuffmanTree* s, int n, int& s1, int& s2);

	// 递归释放Huffman树占用的空间
	void free_tree(HuffmanTree tree);
};

#endif