typedef
struct
htnode,
*huffmancode;
typedef
char
**huffmancode;
// 求報文赫夫曼編碼的演算法
void
huffmancoding
(huffmantree &ht, huffmancode &hc,
int*w,
int n)
m =2* n -1;
// 0號單元棄用
ht =
(huffmantree)
malloc
((m +1)
*sizeof
(htnode));
// ht 的 1到n個位置 用來存放(葉子)結點,初始化它們的權重
for(p - ht, i =1;
i <= n;
i++, p++
, w++);
}// ht 剩下來的結點用來存放遍歷過程中產生的分支結點
for(
; i <= m; i++
, p++);
}// 建立赫夫曼樹
for(i=n+
1; i<=m; i++
)// hc 是乙個字串陣列,用於存放n個葉子結點編碼串的n個起始位址
hc =
(huffmancode)
malloc
((n+1)
*sizeof
(char*)
);// 分配求編碼的工作空間
cd =
(char*)
malloc
(n *
sizeof
(char))
;// 表示'\0' ,編碼結束符
cd[n-1]
=0;// 逐個字元求赫夫曼編碼,
// 從葉子結點開始逆向求赫夫曼編碼
for(i=
1; i<=n; i++
)else
// 根據編碼位數分配空間儲存赫夫曼編碼
hc[i]=(
char*)
malloc
((n-start)
*sizeof
(char))
;// 從工作區間 複製到 編碼陣列裡面
strcpy
(hc[i]
,&cd[start]);
}}}
typedef
struct
htnode,
*huffmancode;
typedef
char
**huffmancode;
void
huffmancoding
(huffmantree &ht, huffmancode &hc,
int*w,
int n)
htnode,
*huffmancode;
typedef
char
**huffmancode;
void
huffmancoding
(huffmantree &ht, huffmancode &hc,
int*w,
int n)
// n個葉子結點 和 n-1個度為2的結點
m =2* n -1;
// 0號單元棄用,下面從1號單元開始存放
ht =
(huffmantree)
malloc
((m +1)
*sizeof
(htnode));
for(p = ht+
1, i =1;
i <= n;
i++, p++
, w++);
}// 剩下的n-1個空位存放遍歷過程中產生的分支結點,到最終的根結點
for(
; i <= m; i++
, p++);
}// 從n+1號位置開始,依次放入遍歷過程產生的分支結點
// m號位置也就是第m+1個單元存放根結點
for(i=n+
1; i<=m; i++
)// hc 存放 n個葉子結點編碼串的n個起始位址
// 第 n+1 個存放'\0',表示編碼結束符
hc =
(huffmancode)
malloc
((n+1)
*sizeof
(char*)
);p = m;
cdlen =0;
// 清空上面產生的m個結點的weight域
// 結點的weight域將作為遍歷時結點的狀態標誌
for(i=
1; i<=m; i++
)// 從根結點到葉子結點
// 開始遍歷,產生編碼
while
(p)else
if(ht[p]
.rchild ==0)
}// 為1 表示已訪問完左子樹,此時該訪問右子樹
else
if(ht[p]
.weight ==1)
}else
}}
赫夫曼編碼
include include using namespace std typedef struct htnode,huffmantree 動態分配陣列儲存赫夫曼樹 typedef char huffmancode 動態分配陣列儲存赫夫曼編碼 赫夫曼編碼的演算法實現 void sethuffmant...
赫夫曼編碼
用赫夫曼樹進行編碼是我們處理資料壓縮常用的方法。請同學們用赫夫曼編碼方法儲存你班同學 資料結構 課程的期終考試成績。include include include include define ok 1 define maxnn 100000 typedef struct studentstuden...
赫夫曼編碼
問題r 赫夫曼編碼 思路 對於赫夫曼來說,往左走為0,往右走為1,可以發現每一位就往下走一層。因此整體報文的長度可以用不同報文在樹中的位置來確定,也就是說,符號種類 每個符號在樹中的深度即為整體報文的長度 而ascll碼的位元位長度為符號個數 8 include include include us...