昨天 已經構建了哈弗曼樹了。哈夫曼編碼 就是從底倒著往前走 如果這點是左子 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...