數(shù)據(jù)結(jié)構(gòu)哈夫曼樹C++實現(xiàn).doc
《數(shù)據(jù)結(jié)構(gòu)哈夫曼樹C++實現(xiàn).doc》由會員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)哈夫曼樹C++實現(xiàn).doc(4頁珍藏版)》請在裝配圖網(wǎng)上搜索。
實 驗 報 告 一、 實驗?zāi)康? 1. 掌握哈夫曼樹的基本概念及所用的存儲結(jié)構(gòu)。 2. 掌握哈夫曼樹的建立算法。 3. 掌握哈夫曼樹的應(yīng)用(哈夫曼樹的編碼和譯碼)。 二、 實驗內(nèi)容 給定權(quán)值5、29、7、8、14、23、3、11,建立哈夫曼樹,輸出哈夫曼編碼。對上述給定的哈夫曼樹及得到的哈夫曼編碼,試輸入一串二進制編碼,輸出它的哈夫曼譯碼。 三、 實驗與算法分析 建立哈夫曼樹,將哈夫曼樹的機構(gòu)定義為一個結(jié)構(gòu)型的一維數(shù)組每個元素含有四項:權(quán)值、雙親、左孩子、右孩子。給定的權(quán)值可以從鍵盤輸入,要輸出所建立的哈夫曼樹,只要輸出表示哈夫曼樹的一維數(shù)組中的全部元素即可。 要實現(xiàn)哈夫曼編碼,只要在所建立的哈夫曼樹上進行二進制編碼:往左走,編碼為0,往右走編碼為1,然后將從根結(jié)點到樹葉中的所有0,1排列起來,則得到該樹葉的哈夫曼編碼。哈夫曼編碼可以用一個結(jié)構(gòu)型的一維數(shù)組保存,每個元素包含:編碼,編碼的開始位置,編碼所對應(yīng)的字符三項。 哈夫曼譯碼,就是將輸入的譯碼還原成對應(yīng)的字符。 抽象的算法描述:將建立哈夫曼樹、實現(xiàn)哈夫曼編碼、哈夫曼譯碼都定義成子函數(shù)的的形式,然后在主函數(shù)中調(diào)用它們。哈夫曼樹的構(gòu)造:假設(shè)有n個權(quán)值,則構(gòu)造出的有n個葉子結(jié)點。n個權(quán)值分別設(shè)為w1,w2,……,wn,則哈夫曼樹的構(gòu)造規(guī)則為:(1)將w1,w2,……,wn看成是有n棵樹的森林(每棵樹僅有一個結(jié)點);(2)在森林中選出兩個根結(jié)點的權(quán)值最小的樹合并,作為一棵新樹的左右子樹,且新樹的根結(jié)點權(quán)值為其左右子樹的根結(jié)點的權(quán)值之;(3)從森林中刪除選取的兩棵樹,并將新樹加入森林。(4)重復(fù)(2)、(3)步,直到森林中只剩一棵樹為止,該樹即為我們所求得的哈夫曼樹。 四、 可執(zhí)行程序及注釋 實驗代碼 #include>b;
}
}
void main()
{
creathuffmantree(); //建立哈夫曼樹
huffcode(); //實現(xiàn)哈弗曼編碼
trancode(); //進行哈弗曼譯碼
cout<
下載提示(請認(rèn)真閱讀)- 1.請仔細閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都歸您。
文檔包含非法信息?點此舉報后獲取現(xiàn)金獎勵!
下載文檔到電腦,查找使用更方便
9.9
積分
下載
還剩頁未讀,繼續(xù)閱讀
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
-
數(shù)據(jù)結(jié)構(gòu)
哈夫曼樹
C+
實現(xiàn)
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學(xué)習(xí)交流,未經(jīng)上傳用戶書面授權(quán),請勿作他用。
鏈接地址:http://m.appdesigncorp.com/p-6635512.html