哈夫曼編碼和解碼的實現

2021-09-24 23:33:42 字數 2901 閱讀 6841

哈夫曼編碼和解碼的實現

#include

#include

#include

#include

using

namespace std;

/*哈夫曼樹的應用----哈夫曼編碼*/

//哈夫曼樹的結點結構

typedef

struct huffmantreehtnode,

*htree;

typedef

char

** huffmancode;

//二級指標,存放指標

const

int leafnum=8;

//葉子結點個數

void

huffmancoding

(htree& ht,

int*w,

int n)

;//構造哈夫曼樹的過程

void

select

(htree ht,

int t,

int&s1,

int&s2)

;//選擇f中權值最小的兩個結點

void

huffmancoded

(htree& ht,huffmancode& hc,

int n,

char

* p)

;//求解哈夫曼編碼

void

translate

(htree& ht,

int a,

int* b,

int bilen,

char

* p); //解碼

void

huffmancoding

(htree& ht,

int*w,

int n)

;//初始化葉子結點完成

}for

(;i++i,

++p)

;//除葉子結點外的結點初始化完成

} cout<<

"初始化後:"

<

cout<<

"雙親"

<<

'\t'

<<

"左孩子"

<<

'\t'

<<

"右孩子"

<<

'\t'

<<

"權值"

<

for(

int i=

0;i)for

(i=n;i

++i)

cout<<

'\n'

<<

"完成後:"

<

cout<<

"雙親"

<<

'\t'

<<

"左孩子"

<<

'\t'

<<

"右孩子"

<<

'\t'

<<

"權值"

<

for(

int i=

0;i) cout<

}void

huffmancoded

(htree& ht,huffmancode& hc,

int n,

char

* p)

hc[i]=(

char*)

malloc

(sizeof

(char))

;//hc[i]即為指標

strcpy

(hc[i]

,&cd[start]);

} cout<<

"哈夫曼編碼為:"

<

for(

int i=

0;i<

8;i++

) cout<

for(

int i=

0;i) cout<

}void

translate

(htree& ht,

int a,

int* b,

int bilen,

char

* p)

cout<<

'\n'

; cout<<

'\n'

<<

"對二進位制編碼解碼後,其內容為:"

<

for(;;

)else

if(b[i]==1

&&ht[n]

.rchild!=-1

)else}}

}void

select

(htree ht,

int t,

int&s1,

int&s2)

else}}

if(s1>s2)

//s1放較小的序號

}int

main()

;//葉子結點權值

char p[leafnum]=;

//葉子結點對應的字元

int bimessage=

;//傳遞的二進位制資訊

int bilen=

sizeof

(bimessage)

/sizeof

(int);

htree ht;

huffmancode hc;

huffmancoding

(ht,w,leafnum)

;huffmancoded

(ht,hc,leafnum,p)

;translate

(ht,leafnum,bimessage,bilen,p)

;return0;

}

執行結果:

哈夫曼編碼和解碼

試題描述 輸入為 一段英文或中文的文章 原文 對輸入的文章構造哈夫曼樹,生成對應的編碼,輸出為 原文所對應的編碼 譯文 根據已經生成的編碼表,輸入任意的譯文可以得到對應的原文。要求有執行結果截圖。include using namespace std typedef struct point huf...

哈夫曼編碼解碼

簡單實現編碼解碼功能 列印哈夫曼樹形 該怎麼做呢 求教!實現初始化,建立huffman樹,並完成字元的編碼 之前解碼用for迴圈不能夠重新復位遍歷 while更好用 include stdio.h include string.h define n 10 待編碼字元的個數,即樹中葉結點的最大個數 d...

哈夫曼編碼與解碼

include include include include define maxnum 60typedef struct huffnode typedef struct huffcode huffnode ht maxnum 2 存放哈夫曼樹 huffcode hcd maxnum 存放ht陣列...