- 相關(guān)推薦
動態(tài)哈夫曼編碼的改進(jìn)
該文所附的動態(tài)哈夫曼編碼數(shù)據(jù)壓縮與解壓源程序中的UpDate函數(shù)是動態(tài)修改哈夫曼樹的關(guān)鍵部分,該函數(shù)對動態(tài)哈夫曼樹的一種可能情況無法正確修改,針對這一點,本文附上對該函數(shù)的一個修正定義,以使該壓縮與解壓程序更加完善。
以下就舉例說明原UpDate函數(shù)無法正確修改的一種哈夫曼樹。例如若要壓縮“TThhis”字符串,則在壓縮完“TTh”之后的動態(tài)哈夫曼樹為圖所示(設(shè)根結(jié)點序號為1000):
@@04A07700.GIF;圖 壓縮完“TTh”之后的動態(tài)哈夫曼樹@@
此時若再將字符h進(jìn)行壓縮編碼,則在輸出h的編碼“01”后需調(diào)整哈夫曼樹,以997號葉結(jié)點為當(dāng)前結(jié)點,則與當(dāng)前結(jié)點具有同樣重量的且序號最大的結(jié)點為998號結(jié)點,而該結(jié)點是997號結(jié)點的父結(jié)點,對二者按原文所提供的UpDate函數(shù)進(jìn)行交換,則將導(dǎo)致998號結(jié)點變成葉結(jié)點,996號結(jié)點變成997號結(jié)點的左孩子,997號結(jié)點則既為自己的父結(jié)點又是自己的右孩子,這樣在對后繼字符i進(jìn)行壓縮編碼時,首先就無法輸出996號空結(jié)點的編碼了,此時壓縮程序陷入死循環(huán)。
顯然這時可以簡單地將998和997號結(jié)點的重量加1,然后以998號結(jié)點的父結(jié)點為當(dāng)前結(jié)點進(jìn)行調(diào)整,根據(jù)這種思想對原文提供的UpDate函數(shù)進(jìn)行修正所得新的UpDate函數(shù)附后。
void UpDate(struct Node *Temp)
{
struct Node * Tempa, * Tempc, * Pointer;
struct LeafNode *p,*q,*b;
unsigned char Letter;
while(Temp!=Root)
{
if(Temp-
【動態(tài)哈夫曼編碼的改進(jìn)】相關(guān)文章:
計算機畢業(yè)論文-動態(tài)哈夫曼編碼的改進(jìn)03-06
漢字的動態(tài)編碼與顯示方案03-18
針對硬件實現(xiàn)的H.264視頻編碼算法改進(jìn)03-18
2.4Kbps MELP低速率語音編碼技術(shù)研究與改進(jìn)03-30
視音頻素材的編碼轉(zhuǎn)換03-19
自適應(yīng)算術(shù)編碼的FPGA實現(xiàn)03-18
對于緊致碼在三種編碼方法下的編碼特性研究03-19
最新推薦
- 搜索引擎中的網(wǎng)絡(luò)蜘蛛技術(shù)探析
- 尋找網(wǎng)絡(luò)質(zhì)量的峰值
- 艾雷斯ACS-3662工作站在硫化機中的應(yīng)用
- 動態(tài)哈夫曼編碼的改進(jìn)
- ARP欺騙防御技術(shù)的研究
- 試論中小企業(yè)網(wǎng)站建設(shè)對其品牌發(fā)展戰(zhàn)略的推動與促進(jìn)
- 無跳線主板BIOS高級設(shè)置
- 防沉迷系統(tǒng)
- 動態(tài)哈夫曼編碼的改進(jìn)
- 基于ASP的網(wǎng)上書店設(shè)計
- 思想動態(tài)分析報告
- 學(xué)生思想動態(tài)報告
- 大學(xué)生思想動態(tài)報告
- 加油站員工心得體會
- 陽光農(nóng)廉工作總結(jié)
- 鉆井工個人工作總結(jié)
- 學(xué)習(xí)活動總結(jié)
- 英語智力題及答案
- 英語個人求職簡歷
- 學(xué)生會入職申請書