資料結構 哈弗曼樹

2021-06-28 21:40:58 字數 903 閱讀 3093

/*-----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 表示。編...