?? huffman_e.h
字號:
#ifndef _HUFFMAN_E_HEADER_001_#define _HUFFMAN_E_HEADER_001_#include "huffman_base.h"// 在huffman_d的基礎上,將索引數組放在tree的內部// 為編碼方便,將元素權值放在tree[num..2*num-1]處。// 將tree[0..num-1]作為索引數組。排序改為從大到小。// 對索引數組排序后,每次從最后選出2個最小值,相加// 后的結點權值放在索引數組最后,結點索引放在索引// 數組中倒數第2個位置,然后索引數組大小減1,并將// 最后一個索引值插入到前面的有序表中,保證索引數// 組仍然有序class huffman_e : public huffman_base{public: huffman_e() {} virtual ~huffman_e(void) {}public: void generate_codes(int num, const unsigned long* weights);protected: // qsort()使用的比較函數 static int index_compare(const void* a, const void* b); // 折半插入排序,將第n個元素插入到[start..n-1]的有 // 序表中,保證其結果仍有序 inline void binsert(unsigned long* tree, int n, int start); // 這里將tree聲明為static成員,這是為了排序時index_compare // 能訪問tree中的元素,以比較大小,但這樣就不支持多線程了, // 除非我們自己實現qsort()函數 static unsigned long* tree;};#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -