資料結構 哈夫曼編碼器

2021-10-21 08:52:30 字數 1489 閱讀 6541

#include

#define maxvalue 32767

typedef

struct

hnodetype;

typedef

struct

hcodetype;

hnodetype huffnode[8]

;//定義全域性變數陣列huffnode存放哈夫曼樹

hcodetype huffcode[8]

;//定義全域性變數陣列huffcode存放哈夫曼編碼

int n;

//定義全域性變數n表示葉子結點個數

void

createhufftree

(void);

//構造哈夫曼樹

void

printhufftree

(void);

//輸出哈夫曼樹

void

createhuffcode

(void);

//構造哈夫曼編碼

void

printhuffcode

(void);

//輸出每個葉子結點的哈夫曼編碼

void

createhufftree

(void

)printf

("輸入%d個節點的權值\n"

,n);

for(i=

1;i<=n;i++

)scanf

("%d"

,& huffnode[i]

.weight)

;//輸入n個葉子節點的權值

for(i=

1;i)else

if(huffnode[j]

.parent==-1

&&huffnode[j]

.weight} huffnode[x1]

.parent=n+i;

huffnode[x2]

.parent=n+i;

huffnode[n+i]

.weight=huffnode[x1]

.weight+huffnode[x2]

.weight;

huffnode[n+i]

.lchild=x1;

huffnode[n+i]

.rchild=x2;}}

void

printhufftree()

void

createhuffcode

(void

)for

(j=cd.start+

1;j<=n;j++

) huffcode[i]

.bit[j]

=cd.bit[j]

; huffcode[i]

.start=cd.start;}}

void

printhuffcode

(void)}

intmain

(void

)

資料結構 哈夫曼樹 哈夫曼編碼

哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...

哈夫曼編碼 哈夫曼樹 (資料結構)

哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...

資料結構 哈夫曼編碼

time limit 1000ms memory limit 65536kb submit statistic problem description 字元的編碼方式有多種,除了大家熟悉的ascii 編碼,哈夫曼編碼 huffman coding 也是一種編碼方式,它是可變字長編碼。該方法完全依據字...