![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二哈夫曼樹_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/5ced41f1-0dc3-4639-a3e5-960a5548ea6e/5ced41f1-0dc3-4639-a3e5-960a5548ea6e1.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二哈夫曼樹_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/5ced41f1-0dc3-4639-a3e5-960a5548ea6e/5ced41f1-0dc3-4639-a3e5-960a5548ea6e2.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二哈夫曼樹_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/5ced41f1-0dc3-4639-a3e5-960a5548ea6e/5ced41f1-0dc3-4639-a3e5-960a5548ea6e3.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二哈夫曼樹_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/5ced41f1-0dc3-4639-a3e5-960a5548ea6e/5ced41f1-0dc3-4639-a3e5-960a5548ea6e4.gif)
![數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)二哈夫曼樹_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-4/27/5ced41f1-0dc3-4639-a3e5-960a5548ea6e/5ced41f1-0dc3-4639-a3e5-960a5548ea6e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)上機(jī)報(bào)告實(shí)驗(yàn)二 哈夫曼編碼專業(yè): 電信工程 班級: 電信1105 學(xué)號: U201113196 姓名: 劉航 完成日期:2012/10/28 1一、 實(shí)驗(yàn)?zāi)康?、 掌握哈夫曼樹的基本概念及所有的存儲結(jié)構(gòu)。2、 掌握哈夫曼樹的建立算法。3、 掌握哈夫曼樹的應(yīng)用(哈夫曼編碼和譯碼)。4、 掌握對文件的使用。二、 實(shí)驗(yàn)內(nèi)容:隨機(jī)產(chǎn)生10000個數(shù)字并寫入一個文件夾中,分別統(tǒng)計(jì)其中0、1、2、3、4、5、6、7、8、9出現(xiàn)的頻率,并以各自的頻率為權(quán)值,為其建立哈夫曼樹,并對每個數(shù)字進(jìn)行哈夫曼編碼,要求有較好的人機(jī)交互過程。三、 程序源代碼:#include <iostream>#i
2、nclude <string>#include <sstream>#include <ctime>#include <fstream>#include<stdlib.h>#include<iomanip>using namespace std;#define N 10string fileName="liuhang.txt" /你要生成的文件的名字int aN=0; /按順序存放0到9出現(xiàn)的次數(shù);float wN+1;const int n=10;const int m=2*n-1;struct tre
3、e /哈夫曼樹的節(jié)點(diǎn)結(jié)構(gòu)float weight; int parent; int lch,rch; struct codetypeint bitsn+1; int start; char ch;tree hftreem+1;struct codetype coden+1;void creathuffmantree();void huffcode();void Get_Randnum () /下面open文件的時(shí)候,打開方式:ios:in。文件不存在則自動創(chuàng)建stringstream sstr;fstream outfile;int temp;/設(shè)定隨機(jī)數(shù)種子srand(unsigned)ti
4、me(NULL);for(int i=0;i<10000;i+)/產(chǎn)生隨機(jī)數(shù)temp =rand()%10;/將隨機(jī)數(shù)放在流sstr中sstr<<temp<<endl;/打開文件,如果文件存放,清空,如果不存在,新建一個文件outfile.open(fileName,ios:in|ios:trunc|ios:out);if(!outfile)cerr<<"Error opening "<<fileName<<" failedn"<<endl;/將生成的數(shù)寫入文件outfile&
5、lt;<sstr.str();outfile.close();void Statistic_Data() /讀取文件字符,統(tǒng)計(jì)頻率int i;string s;string b="0","1","2","3","4","5","6","7","8","9" fstream outfile; outfile.open(fileName,ios:in);if(!outfile)cerr<&
6、lt;"Error opening "<<fileName<<" failedn"<<endl; /遍歷文件,依次讀取每個字符 while(outfile>>s) for(i=0;i<10;i+)if(s=bi) +ai; outfile.close(); int main()int i;cout<<"welcom!"<<endl;cout<<"已隨機(jī)產(chǎn)生10000個數(shù)字(0到9)并存入文件liuhang.txt"<&l
7、t;endl;Get_Randnum ();Statistic_Data();for(i=0;i<10;i+)cout<<"數(shù)字"<<i<<"出現(xiàn)的次數(shù)為:"<<ai<<endl;cout<<endl;cout<<"建立哈夫曼樹并編碼"<<endl;for(i=0;i<N;i+)wi+1=ai/10000.0;/*for(i=1;i<=N;i+)cout<<wi<<endl;*/ /這段代碼用于檢驗(yàn)
8、數(shù)字出現(xiàn)的概率是否已經(jīng)正確統(tǒng)計(jì)creathuffmantree(); huffcode(); return 0;void creathuffmantree() int i,j,p1,p2; float s1,s2; for(i=1;i<=m;i+) hftreei.parent=0; hftreei.lch=0; hftreei.rch=0; hftreei.weight=0; for(i=1;i<=n;i+) hftreei.weight=wi; for(i=n+1;i<=m;i+) p1=p2=0; s1=s2=32767; for(j=1;j<=i-1;j+) i
9、f(hftreej.parent=0) if(hftreej.weight<s1) s2=s1; s1=hftreej.weight; p2=p1; p1=j; else if(hftreej.weight<s2) s2=hftreej.weight;p2=j; hftreep1.parent=i; hftreep2.parent=i; hftreei.lch=p1; hftreei.rch=p2; hftreei.weight=hftreep1.weight+hftreep2.weight; /for(i=N+1;i<=2*N-1;i+)/cout<<hftre
10、ei.weight<<endl; /這段代碼用于檢驗(yàn)哈夫曼樹是否已經(jīng)正確建立void huffcode()codetype cd; int c,p; for(int i=1;i<=n;i+) cd.start=n+1; cd.ch=47+i; c=i; p=hftreei.parent; while(p!=0) cd.start-; if(hftreep.lch=c)cd.bitscd.start=0; else cd.bitscd.start=1; c=p; p=hftreep.parent; codei=cd; for(int i=1;i<=n;i+) cout&l
11、t;<"數(shù)字"<<codei.ch<<"的權(quán)值為:"<<hftreei.weight<<setw(5)<<" 編碼為:" for(int j=codei.start;j<=n;j+) cout<<codei.bitsj<<" " cout<<endl;四、運(yùn)行截圖: 五、困惑及建議我覺得這個程序的重點(diǎn)有兩個地方:第一,隨機(jī)產(chǎn)出數(shù)字,并存入文件。這一點(diǎn)我們上學(xué)期C語言中沒有講到,然后我重新自學(xué)了C+中關(guān)于文件的知識,但在應(yīng)用中依然出了很多問題,比如對幾個文件類的使用感到困惑,如何遍
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子書閱讀器項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國獨(dú)立收線機(jī)行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年機(jī)車空調(diào)電源整機(jī)測試儀項(xiàng)目可行性研究報(bào)告
- 2025年室內(nèi)型溫度傳感器/變送器項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國剛性防水干混砂漿行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年沖浪板項(xiàng)目可行性研究報(bào)告
- 2025年上嘴過濾瓶項(xiàng)目可行性研究報(bào)告
- 2025至2030年高光水性高耐磨上光油項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年金屬瓷牙項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年耐磨高錳鋼軋臼壁項(xiàng)目投資價(jià)值分析報(bào)告
- 湘科版科學(xué)(2017)五年級下冊全冊教案
- GB/T 22751-2008臺球桌
- GB/T 13234-2009企業(yè)節(jié)能量計(jì)算方法
- GB/T 10781.2-2006清香型白酒
- 易經(jīng)中的人生智慧-職業(yè)生涯規(guī)劃與個人發(fā)展課件
- ABAP開發(fā)培訓(xùn)經(jīng)典入門課件
- 北郵工程數(shù)學(xué)作業(yè)1-4
- 廣東省緊密型縣域醫(yī)共體雙向轉(zhuǎn)診管理中心運(yùn)行指南
- PEP人教版小學(xué)英語單詞卡片四年級下卡片
- 新部編版六年級下冊道德與法治全冊教案(教學(xué)設(shè)計(jì))
- 小學(xué)英語六年級上冊Unit1-The-king’s-new-clothes-第1課時(shí)課件
評論
0/150
提交評論