學過了哈夫曼編碼知識點,邱同學就給我發來了相關程式,看起來還不錯。
貼出來**,以饗大家。
要點:1、二叉樹用偽指標表示法;
2、哈夫曼編碼採用自下而上回溯的辦法。
#include#include#includeusing namespace std;
#define ok 1
#define error 0
#define overflow -2
#define maxsize 100
typedef int status;
typedef int elemtype;
typedef char **huffmancode;
//結點型別
typedef struct
htnode,*huffmantree;
//從若干棵樹中選擇出根的weigth最小的兩個
void select(huffmantree &ht, int n, int &s1, int &s2) //構造哈夫曼樹中的select函式
}for(int i=1; i<=n; i++)
s1 = minum;
for(int i=1; i<=n; i++)
}for(int i=1; i<=n; i++)
s2 = minum;
}//哈夫曼樹建構函式
void creathuffmantree(huffmantree &ht,int n) //構造哈夫曼樹
for(i=1;i<=n;i++)
for(i=n+1;i<=m;i++)
Huffman編碼的實現
這裡的huffman編碼就是離散數學中學的最優二叉樹,現在我們用c 來實現它。首先考慮實現它使用的資料結構,當然這裡肯定使用二叉樹。其次就是儲存方式,對於樹一般情況是用間接儲存也就是鍊錶。但是二叉鍊錶不方便尋找雙親節點,這裡使用向量更好,對儲存空間的利用率也較高。建立資料結構 huffman樹中每個...
Huffman編碼的實現
include include define maxbit 100 定義哈夫曼編碼的最大長度 define maxvalue 100000 定義最大權值 define maxleaf 300 定義哈夫曼樹中最多葉子節點個數 define maxnode maxleaf 2 1 哈夫曼樹最多結點數 u...
正規化Huffman編碼的實現
傳統的 huffman 編碼依賴於二叉樹,一方面 huffman 編碼生成的速度不夠快,另一方面在沒有指標的程式語言中要實現二叉樹結構又非常複雜。所以懂得構造正規化huffman編碼去解決一些問題在某些方面就很有必要。正規化huffman編碼相比與傳統huffman編碼,不需要建造huffman樹,...