數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc

數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc

ID:57333359

大小:113.00 KB

頁數(shù):6頁

時間:2020-08-12

數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc_第1頁
數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc_第2頁
數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc_第3頁
數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc_第4頁
數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc_第5頁
資源描述:

《數(shù)據(jù)結(jié)構(gòu)——實驗四哈夫曼樹與哈夫曼編碼.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、軟件學(xué)院哈夫曼樹與哈夫曼編碼實驗報告課程名稱:數(shù)據(jù)結(jié)構(gòu)姓名:鄭斌學(xué)號:7班級:卓越131實驗四哈夫曼樹與哈夫曼編碼一、實驗?zāi)康?、使學(xué)生熟練掌握哈夫曼樹的生成算法。2、熟練掌握哈夫曼編碼的方法。二、實驗內(nèi)容本次實驗提供3個題目,難度相當,學(xué)生可以根據(jù)自己的情況選做,其中題目一是必做題,其它選作!題目一、哈夫曼樹和哈夫曼編碼[問題描述] 一電文,有若干個不同字符,要求從終端輸入這些不同字符及其出現(xiàn)的頻率,然后對這些字符進行哈夫曼編碼,并輸出。[測試數(shù)據(jù)]利用教材P.148例6-2中的數(shù)據(jù)調(diào)試程序(可自己設(shè)定測試數(shù)據(jù))。[選作內(nèi)容]1、打印出該哈夫曼樹2、若從終端輸入

2、任意一段電文(假設(shè)僅為26個大小寫英文字母),試編程高效地求出該段電文的哈夫曼編碼。提示:如何快速統(tǒng)計不同字符的出現(xiàn)頻率3、譯碼:將上述1的編碼結(jié)果還原成電文。三、算法設(shè)計1)本程序包含三個模塊1.voidSelect(HuffmanTreeHT,inti,int&s1,int&s2)//選擇函數(shù)2.voidHuffmanCoding(HuffmanTree&HT,HuffmanCode&HC,int*w,intn)w存放n個權(quán)值,構(gòu)造哈夫曼樹p,3.VoidHuffmancode(HuffmanTree&HT,HuffmanCode&HC,intn)求出哈夫曼編

3、碼hc并輸出哈弗曼編碼四、實驗結(jié)果圖1-1輸入哈弗曼樹的權(quán)值圖1-2顯示哈弗曼樹表與其編碼五、總結(jié)通過做哈弗曼樹實驗讓對最優(yōu)二叉樹這種結(jié)構(gòu)有了更深的了解和應(yīng)用,對我以后的編程產(chǎn)生了比較深遠的影響。六、源程序(帶注釋)#include#include#include#include#includeusingnamespacestd;typedefstruct{intweight;intparent,lchild,rchild;charcharr;}HTNode,*Huff

4、manTree;typedefchar**HuffmanCode;voidSelect(HuffmanTreeHT,inti,int&s1,int&s2){intj,k=1;while(HT[k].parent!=0)k++;s1=k;for(j=1;j<=i;++j)if(HT[j].parent==0&&HT[j].weight

5、

6、k==s1))k++;s2=k;for(j=1;j<=i;++j)if(HT[j].parent==0&&HT[j].weight

7、2].weight&&j!=s1)s2=j;}voidHuffmanCoding(HuffmanTree&HT,int*w,intn){intm,i,s1,s2;if(n<=1)return;m=2*n-1;HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode));for(i=1;i<=n;++i){HT[i].weight=w[i];HT[i].lchild=0;HT[i].rchild=0;HT[i].parent=0;}for(i=n+1;i<=m;++i){HT[i].weight=0;HT[i].lchild=0;HT[i

8、].rchild=0;HT[i].parent=0;}//構(gòu)建哈弗曼樹for(i=n+1;i<=m;++i){Select(HT,i-1,s1,s2);//選擇parent為0且weight最小的兩個結(jié)點,期序號分別為s1,s2HT[s1].parent=i;HT[s2].parent=i;HT[i].lchild=s1;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;}cout<<"哈弗曼樹表如下:"<

9、d"<weight<parent<lchild<rchild<

10、r[n];

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。