Huffman樹進行編碼和解碼

2022-04-04 06:14:47 字數 2099 閱讀 9355

//編碼

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

struct

huffmannode

}huffmannode, *phuffmannode;

typedef pair

pii;//

haffuman節點和它的編號

bool

operator >(pii x, pii y)

struct

huffman

huffman = new huffmannode[2*(cntnode)];

int index = 0

;

for(int i=0; i<150; ++i)

}while(qnode.size()>=2

) }

void

huffmancoding()

else

if(huffman[p].rd == child)

}reverse(code.begin(), code.end());

huffmanmapx.insert(make_pair(code, huffman[i].ch));

huffmanmapy.insert(make_pair(huffman[i].ch, code));}}

void outhuffmantree(fstream &fout, int

f) else

}void

outhuffmancode()

cout

fout

/想檔案中輸入huffman編碼

int f = 2*cntnode-2;//

huffman樹的父節點

outhuffmantree(fout, f);

fout

<

for(map::iterator it = huffmanmapx.begin(); it!=huffmanmapx.end(); ++it)

}};int

main()

//解碼

#include#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

struct

huffmantreenode

} *phuffmantreenode;

struct

huffman

void

outt(phuffmantreenode t)

else

return

;

if(t->rd !=null)

}void

inithuffmantree()

}void

outhuffmanencode()

else

if(i==code.length()-1) encode+=huffmanmapx[cd];

}cout

}};int

main()

操作流程:

文字內容:aaaaaaabbbbbccdddd, and i am a student, my name is hjzgg!

1.首先利用''編碼"工具將文字編碼,會輸出乙個out.txt的文字,將out.txt文字中的內容傳送給你的好友。

2.接受到out.txt文字的內容後,將內容複製到文字名為in.txt的檔案中,利用"解碼"工具(保證in.txt和解碼工具在同一目錄下)可以檢視文字內容。

3.其中out.txt文字的格式如下:

Huffman樹的編碼解碼

上個學期做的課程設計,關於huffman樹的編碼解碼。要求 輸入huffman樹各個葉結點的字元和權值,建立huffman樹並執行編碼操作 輸入一行僅由01組成的電文字串,根據建立的huffman樹進行解碼操作,程式最後輸出解碼後的結果 huffman.h定義了樹的結點資訊,各種操作。gcc編譯通過...

huffman編碼和解碼實現

寫資料結構的實驗確實是蠻麻煩的,下面提供乙個還可以執行的源程式給大家參考,應付實驗老師是綽綽有餘的了 link.h檔案內容 pragma once class link link的實現檔案什麼內容也沒有,所以就不寫啦 huffman.h內容 pragma once include link.h cl...

huffman樹和huffman編碼

huffman樹和huffman編碼 include include include include define overflow 1 typedef struct htnode,huffmantree typedef char huffmancode void select huffmantre...