接著學習C 哈夫曼編碼

2021-07-27 03:49:07 字數 1295 閱讀 3574

昨天 已經構建了哈弗曼樹了。哈夫曼編碼 就是從底倒著往前走 如果這點是左子 0右子1 直到根  而且每個編碼都不能是別的編碼的字首

上完整馬 看注釋哈

#ifndef h_hpp

#define h_hpp

#include //1 2 4 6 每兩個頂點 都把權值相加合成乙個新頂點 直到剩下乙個點 就構建完成這個哈夫曼樹了。

//

// 13

// 6 7

// 3 4

// 1 2

using namespace std;

templatestruct huf

;templatestruct hufcode

;templateclass do

;templatedo::do()

; //這裡可以有乙個char b 裡面放著·每個點的資訊 a b c d e 然後上面這些a存的是每個點的頻率

n = 5;

q_sort(a, 0, 4);

m = n * 2 - 1;

huff = new huf[m];

huffcode = new hufcode[n];//初始化

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

for (int i = 0; i < n - 1; i++)

else if (huff[j].wdo::~do()

template<>

void do::q_sort(int a, int l, int r)

while (i < j)

setcode();

for (int i = 0; i < n; i++)//訪問每個頂點

cout << endl; }}

templatevoid do::setcode()

for (int j = n - 1; j > tempcode->start;j--)

cout << endl;

huffcode[i].start = tempcode->start;//編碼開始位置

huffcode[i].w = tempcode->w;//權值也存好

}delete tempcode;

}#endif //h_hpp

#include "h.hpp"

int main()

嗯。醬紫。

哈夫曼編碼 C

我是從 資料結構與演算法 c 語言描述 這本書裡面抄的 程式可以正常執行 using system using system.collections.generic using system.linq using system.text namespace 哈夫曼編碼1 public huffman...

c 哈夫曼編碼

哈夫曼編碼的基本步驟 1 把概率最小的兩個符號組成乙個新的節點 2 重複步驟,直到概率和為1 3 總根節點開始到相應於每個符號的 樹葉 概率大的標 1 概率小的標 0 4 從根節點開始,對符號進行編碼 1 定義結構體 typedef struct htnode typedef struct htno...

C 哈夫曼編碼

include include include include define hfmlenth 999 define maxcode 10 待輸入字串 char str hfmlenth 編碼 intcode hfmlenth 哈夫曼樹的葉子數 其他節點數 根節點 最大深度 int orilenth...