掌握赫夫曼編碼演算法。
基本要求:
演算法:從終端讀n個字元和n個權值,建立赫夫曼樹;利用已建好的赫夫曼樹,對輸入的字元進行編碼並輸出編碼結果。
選作內容:
在演算法中,利用已建好的赫夫曼樹對輸入**進行解碼。
總結:這部分較為困難掌握思想才是主要的!
#include #include #include #include #include typedef struct htnodehtnode,*huffmantree;
typedef char **huffmancode;
int min(huffmantree t,int i)
}void huffmancoding(huffmantree&ht,huffmancode &hc,int*w,int n)
for(;i<=m;i++,p++)
(*p).parent=0;
for(i=n+1;i<=m;i++)
hc=(huffmancode)malloc((n+1)*sizeof(char*));
cd=(char*)malloc(n*sizeof(char));
cd[n-1]='\0';
for(i=1;i<=n;i++)
free(cd);
}int main()
執行結果:
基礎演算法學習(二) 二叉樹及應用赫夫曼編碼
這次學習的重點在於二叉樹的性質 鏈式儲存結構 也就是c語言的struct 和赫夫曼編碼,學習的教材是清華大學出版社出版的c語言版資料結構。首先是二叉樹 二叉樹 binary tree 是另一種樹形結構,它的特點是每個結點至多只有二棵子樹,並且二叉樹的子樹有左右之分,其次序不能任意顛倒。二叉樹的性質 ...
赫夫曼樹(最優二叉樹) 赫夫曼編碼
首先我們看一下相關的一些概念。路徑長度 從樹中乙個節點到另外乙個節點之間的分支構成兩個節點之間的路徑,路徑上的分支數目稱為路徑長度。如圖中的數字就為路徑長度。樹的路徑長度就是從樹根到每乙個節點的路徑的長度總和。上圖二叉樹的樹路徑長度為1 1 2 2 2 2 3 3 16。那麼根據這樣可以得出當節點一...
ACM之二 二叉樹遍歷
一 二叉樹前序遍歷 void searchtree biarytree t 二 二叉樹中序遍歷 void searchtree biarytree t 三 二叉樹後序遍歷 void searchtree biarytree t 四 二叉樹按層遍歷 typedef struct queue dqueu...