資料結構作業,哈夫曼樹的建立,編碼,解碼
哈夫曼樹的生成:
#define m 80
typedef
struct
nodetype;
typedef nodetype huftree[m+1]
;typedef
char
** hufcode;
/*在huffman樹中選出兩個雙親為0且權值最小的結點*/
void
select
(huftree ht,
int n,
int*s1,
int*s2)
} t=
1000
;for
(j=1
;j<=n;j++)}
}/*生成huffman樹*/
void
huf_tree
(float w,
char data[
],huftree &ht,
int n)
for(i=n+
1;i<=
2*n-
1;i++
) ht[i]
.parent=0;
for(i=n+
1;i<=
2*n-
1;i++
)}
哈夫曼樹的編碼:
void
huf_code
(hufcode &hcd,huftree ht,
int n)
hcd[i]=(
char*)
malloc
(sizeof
(char)*
(n-start));
strcpy
(hcd[i]
,&cd[start]);
}}intsearch
(char data[
],hufcode hcd,
int n)
}return t;
}
哈夫曼樹的解碼:
void
huf_decode
(hufcode hcd,huftree ht,
char code,
int n)
else
}}
資料結構之哈夫曼樹
現在,我們經常會使用壓縮和解壓縮軟體來處理文件,因為它除了可以減少文件在磁碟上的空間外,還有重要的一點,就是我們可以在網路上一壓縮的形式傳輸大量資料,是的儲存和傳遞都更加高效。那麼壓縮而不出錯是如何做到的呢?簡單說,就是把我們要壓縮的文字進行重新編碼,今天我們就介紹一種最基本的壓縮編碼方法 哈夫曼編...
資料結構 哈夫曼樹 哈夫曼編碼
哈夫曼樹又稱最優樹 二叉樹 是一類帶權路徑最短的樹。構造這種樹的演算法最早是由哈夫曼 huffman 1952年提出,這種樹在資訊檢索中很有用。結點之間的路徑長度 從乙個結點到另乙個結點之間的分支數目。樹的路徑長度 從樹的根到樹中每乙個結點的路徑長度之和。結點的帶權路徑長度 從該結點到樹根之間的路徑...
哈夫曼編碼 哈夫曼樹 (資料結構)
哈夫曼編碼,又稱霍夫曼編碼,是一種編碼方式,哈夫曼編碼是可變字長編碼 vlc 的一種。huffman於1952年提出一種編碼方法,該方法完全依據字元出現概率來構造異字頭的平均長度最短的碼字,有時稱之為最佳編碼,一般就叫做huffman編碼 有時也稱為霍夫曼編碼 include include inc...