邱同學寫的huffman編碼程式

2021-10-10 07:54:41 字數 835 閱讀 5716

學過了哈夫曼編碼知識點,邱同學就給我發來了相關程式,看起來還不錯。

貼出來**,以饗大家。

要點: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樹,...