/*-----code for fun---------------
-------created by dream_whui------
-------2015-2-8-------------------*/
#include "stdafx.h"
#include using namespace std;
typedef struct//定義哈弗曼樹的結構
htnode, *huffmantree;
typedef char** huffmancode;
void select(huffmantree ht, int n, int &s1, int &s2)//選出哈弗曼樹ht中權值最小,雙親結點序號為0,的兩個結點,序號賦值給s1,s2
}ht[f1].parent = 1;//雙親結點設為1,做為標記(不會再被選到)
s1 = f1;
k = uint_max;
for(i=1; i<=n; i++)//找到權值第二小的結點
}ht[f2].parent = 1;
s2 = f2;
int temp;
if(s1>s2)
}void huffmancoding(huffmantree &ht, huffmancode &hc, int *w, int n)
; p->weight = *w;
p->lchild = 0;
p->rchild = 0;
p->parent = 0;
}for(; i<=m; i++, p++)//後面結點初始化
for(i=n+1; i<=m; i++)// 建赫夫曼樹
huffmancoding(t,hc,weight,n);
cout<<"哈弗曼編碼"<
資料結構哈弗曼樹
include using namespace std define maxvalue 1000 define n 100 typedef struct hnodetype typedef structhcodetype n為葉子節點的個數 void menu void create haffman...
資料結構 哈弗曼樹
哈夫曼樹應用例項 哈夫曼編碼 關鍵 要設計長度不等的編碼,則必須使任一位元組的編碼都不是另一字元的編碼的字首 字首編碼。解碼過程 分解接收字串,遇 0 向左,遇 1 向右,一旦達到葉子結點,則譯出乙個字元,反覆由根出發,直到解碼完成。特點 每一碼都不是另一碼的字首,絕不會譯錯。哈弗曼樹的構造 哈弗曼...
資料結構之哈弗曼樹與哈弗曼編碼
一.哈弗曼樹和哈弗曼編碼先知 哈弗曼樹是二叉樹中一種特殊的樹,也被稱為最優二叉樹。其通過某種規則 權值 來構造出一哈夫曼二叉樹,在這個二叉樹中,只有葉子節點才是有效的資料節點,其他的非葉子節點是為了構造出哈夫曼而引入的!哈夫曼編碼是通過哈夫曼樹進行的一種編碼,一般情況下,以字元 0 與 1 表示。編...