




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
潑海工禽院針篇機(jī)科禽系實(shí)驗(yàn)報(bào)告書(shū)課程名:《數(shù)據(jù)結(jié)構(gòu)》題冃:樹(shù)型數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)班級(jí):學(xué)號(hào):姓名:評(píng)語(yǔ):成績(jī):指導(dǎo)教師:樹(shù)型數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)報(bào)告要求1目的與要求:1) 熟練掌握Huffman樹(shù)的創(chuàng)建算法與編程實(shí)現(xiàn);2) 熟練掌握Huffman編碼算法的實(shí)現(xiàn)與編程應(yīng)用;3) 創(chuàng)建較為實(shí)用的通信報(bào)文Huffman編碼系統(tǒng)和譯碼系統(tǒng);4) 按照實(shí)驗(yàn)題目要求獨(dú)立正確地完成實(shí)驗(yàn)內(nèi)容(提交程序清單及相關(guān)實(shí)驗(yàn)數(shù)據(jù)與運(yùn)行結(jié)果);5) 認(rèn)真書(shū)寫(xiě)實(shí)驗(yàn)報(bào)告,并按時(shí)提交。2實(shí)驗(yàn)內(nèi)容或題目實(shí)驗(yàn)四:樹(shù)型數(shù)據(jù)結(jié)構(gòu)實(shí)驗(yàn)一一創(chuàng)建通信報(bào)文編碼與譯碼系統(tǒng)構(gòu)造通信報(bào)文編碼和譯碼系統(tǒng)(要求Huffman編碼與譯碼)。條件:1、 使用英文報(bào)文實(shí)施加密通信。設(shè)組成報(bào)文的字符集為26個(gè)英文字母(不分人小寫(xiě))和兩個(gè)標(biāo)點(diǎn)符號(hào)字符“,”、”和一個(gè)空格字符(共29個(gè)字符)。2、 字符集中每個(gè)字符(含字母和兩個(gè)標(biāo)點(diǎn)符號(hào))的使用概率自己根據(jù)英文行文合理給出(可以在網(wǎng)上查詢(xún))。3、 以字符集中各個(gè)字符為葉結(jié)點(diǎn)、字符的使用頻率為權(quán)重構(gòu)造Huffman樹(shù),并求得各個(gè)字符的Huffman編碼(參考教材P152-153教材算法6.16)。同時(shí),輸出構(gòu)造的Huffman樹(shù)和字符編碼結(jié)果。4、 在上述通信報(bào)文編碼和譯碼系統(tǒng)中實(shí)現(xiàn):輸入一報(bào)文原文(即使用英文書(shū)寫(xiě)的一段文字或一兩句話,稱(chēng)為明文),給出要發(fā)送的報(bào)文編碼(密文);再輸入一密文(0、1序列),輸出其對(duì)應(yīng)的譯碼報(bào)文(明文)。其中報(bào)文原文或編碼序列自己設(shè)定,盡量是一句話或一段文字的對(duì)應(yīng)編碼序列,這樣可以驗(yàn)證輸出結(jié)果的正確性。5、 本次實(shí)驗(yàn)程序給出創(chuàng)建哈曼和哈邛曼編碼的源程序,調(diào)試運(yùn)行并實(shí)驗(yàn)本次實(shí)驗(yàn)的全部功能。3實(shí)驗(yàn)步驟與源程序#include<stdio.h>#include<stdlib.h>#include<string.h>tvpedefchar*HuffinanCode;/*動(dòng)態(tài)分配數(shù)組,存儲(chǔ)哈夫曼編碼tvpedefstmctunsignedmtweight;/*用來(lái)存放各個(gè)結(jié)點(diǎn)的權(quán)值*/unsignedmtparent,LChild,RChild;/*指向雙親、孩子結(jié)點(diǎn)的指針*/}HTNode,*HuffinanTree; /*動(dòng)態(tài)分配數(shù)組,存儲(chǔ)哈夫曼樹(shù)*/voidselect(HuffinanTree*ht,*sl,mt*s2){inti;intmin;fbi(i=l;i<=n;i++){.parent==0){niiii=i;1=n+l;}}fbi(i=l;i<=n;i++){.parent==0){if((*ht)[i].weight<(*ht)[nun].weight)niiii=i;}}*sl=niiii;fbi(i=l;i<=n;i++){if((*ht)[i].parent==0&&i!=(*sl)){niiii=i;1=n+l;}}fbi(i=l;i<=n;i++)if((*ht)[i].parent==0&&i!=(*sl))if((*ht)[i].weight<(*ht)[niin].weight)niiii=i;}}*s2=niiii;}voidCrtHuffiiianTree(HufiiiianTree*ht,mt*w.mtn){/*W存放已知的n個(gè)權(quán)值,構(gòu)造哈夫曼樹(shù)lit*/intmj;intsl,s2;m=2*n-l;*ht=(HuffinanTiee)nialloc((m+l)*sizeof(HTNode));/*0號(hào)單元未使用*/foi(i=l;i<=n;i++){/*1-n號(hào)放葉子結(jié)點(diǎn),初始化*/(*ht)[i].weight=w[i];(*ht)[i].LCliild=0;(*ht)[i].parent=0;(*ht)[i].RChild=0;}fbi(i=n+1;i<=m;i++){(*ht)[i].weight=0;(*ht)[i].LCliild=0;(*ht)[i].parent=0;(*ht)[i].RChild=0;} /*非葉子結(jié)點(diǎn)初始化*//* 初始化完畢!對(duì)應(yīng)算法步驟1 */for(i=n+1;i<=m;i++) /*創(chuàng)建非葉子結(jié)點(diǎn),建哈夫曼樹(shù)*/{/*在(*ht)[l]~(*ht)[i-l]的范I制內(nèi)選擇兩個(gè)parent為0且weight最小的結(jié)點(diǎn),其序號(hào)分別賦值給si、s2返回*/select(ht,i-l,&s1、&s2);(*ht)[sl].paient=i;(*ht)[s2].paient=i;(*ht)[i].LCluld=sl;(*ht)[i].RChild=s2;(*ht)[i].weight=(*ht)[s1].weight+(*ht)[s2].weight;}}/*哈夫曼樹(shù)建立完畢*/voidoutputHuffinan(HuffiiianTreeHT,mtm){if(m!=0){printf(n%dH.HT[m].weight);outputHuffiiian(HT,HT[m].LChild);outputHuffiiian(HT,HT[m].RChild);}}voidCrtHuffiiianCode(HuffiiianTree*ht,HuffiuanCode*hc,hitn)/*從葉子結(jié)點(diǎn)到根,逆向求每個(gè)葉子結(jié)點(diǎn)對(duì)應(yīng)的哈夫曼編碼*/{char*cd;inti;unsignedmtc;intstart;intp;hc=(HuffiiianCode*)malloc((n+1)*sizeof(char*));/*分配n個(gè)編碼的頭指針*/cd=(char*)nialloc(n*sizeof(chai));/*分配求當(dāng)前編碼的丁作空間*/cd[ml]=〃\0: /*從右向左逐位存放編碼,首先存放編碼結(jié)束符*/for(i=1;i<=n;i-H-)/*求n個(gè)葉子結(jié)點(diǎn)對(duì)應(yīng)的哈夫曼編碼*/{stait=n-l; /*初始化編碼起始指針*/fbr(c=i,p=(*ht)[i].parent;p!=0;c=p,p=(*ht)[p].parent)/*從葉子到根結(jié)點(diǎn)求編碼*/if((*ht)[p].LChild==c)cd[~start]=,O,;嚴(yán)左分支標(biāo)0*/elsecd[-start]=,l,;嚴(yán)右分支標(biāo)1*/hc[i]=(char*)inalloc((n-start)*sizeof(char));嚴(yán)為第i個(gè)編碼分配空間strcpy(hc[i],&cd[stait]);}fiee(cd);char*nungnia(HuffiiianTreeHTjntmxhar*ch,char*code){char*result=newchar[100];for(int1=0j=O;ch[j]!=0J++)iiiitn=m;while(HT[n].LCluld!=0&&HT[n].RChild!=0)iif(code[i]=,0,)n=HT[n].LCluld;elsen=HT[n].RCluld;i++;}result[j]=ch[n-l];}result!j]=0;returnresult;}char*niiwen(HuffinanTreeHT.intm,char*ch,char*c.HuffinanCode*code){char*result=newchar[100];result[0]=0;mtij.n=0;fbr(i=0;ch[i]!=,\0t;i++)ifor(j=0j<mj++)/Iif(c[j]==ch[i])strcat(result,code[j+l]);break;retuinresult;char*CitHuffiuanCode(HuffinanTree*ht,HuffiiianCode*hc,mtn.char*ch)char*cd;inti;intc;intstart;mtp;hc=(HuffiiianCode*)malloc((n+1)*sizeof(char*));cd=(char*)nialloc(n*siz亡oRchar));cd[ml]='\0:fbi(i=l;i<=n;i++)fistart=n-l;for(c=i,p=(*ht)[i].parent;p!=0;c=p,p=(*ht)[p].parent)if((*ht)[p].LChild=c)cd[-start]=,0,;elsecd[-start]=,r;hc[i]=(cliar*)malloc((n-start)*sizeof(char));strcpy(hc[i]、&cd[start]);}fiee(cd);fbi(i=l;i<=n;i++)printf(n%c編碼為%s\iT,ch[i?1].he[i]);charnun[100];pnntf("輸入明碼:\n");gets(nmi);char*nuwen(HuffiiianTreeHT.iiitm、char*ch?char*c,HuffinanCode*code);應(yīng)密文:\ii%s\ii,\niiwen(*ht,29jiuiLch.hc));return0;voidmain(){HuffiiianTreeHT;HuffiiianCodeHC;intn=29;ints=0;intm;charzi[29]={W;BVC\B\T7F\V:H\I\7\,K7L\,Nr^\,O\P\,Q\tR,:St;T\V,V\W/X\,Y7Z\7;.\lintw[29]={8,2A3,l,l8,24,30,7,19,11,54,30,66,71,31,19,73,75,69,36,10,12^2」7,25,72,40,12};printf(HthetotalnumberoftheHuffinanTiee:M);CnHuffiiianTree(&HTw.n);m=2*n-l;outputHuffinan(HT.m);pnnrfVW);char*hc=CrtHuff
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國(guó)過(guò)濾器行業(yè)發(fā)展前景預(yù)測(cè)及投資方向研究報(bào)告
- 2025年中國(guó)汽車(chē)用橡膠管市場(chǎng)深度分析及投資戰(zhàn)略咨詢(xún)報(bào)告
- 2024-2025學(xué)年高中語(yǔ)文第二單元傳記第4課“布衣總統(tǒng)”孫中山節(jié)選練習(xí)粵教版必修1
- 2025年科研項(xiàng)目年度總結(jié)報(bào)告
- 2024-2025學(xué)年高中物理第1章電場(chǎng)第6節(jié)示波器的奧秘學(xué)案粵教版選修3-1
- 2024-2025學(xué)年高中物理第6章章末復(fù)習(xí)課教案含解析魯科版選修1-1
- 2025年自動(dòng)人行道鋁合金踏板項(xiàng)目投資可行性研究分析報(bào)告
- 2025年性能測(cè)試板行業(yè)深度研究分析報(bào)告
- 2024年固體廢物處理市場(chǎng)評(píng)估分析及發(fā)展前景調(diào)研戰(zhàn)略研究報(bào)告
- 鋰電池導(dǎo)電涂層項(xiàng)目評(píng)價(jià)分析報(bào)告
- IPO項(xiàng)目律師盡職調(diào)查查驗(yàn)計(jì)劃表模版
- 醫(yī)院信息系統(tǒng)HIS知識(shí)培訓(xùn)教學(xué)課件-HIS的主要內(nèi)容
- 經(jīng)濟(jì)法通論債權(quán)法總論
- 合成聚氨酯原料及助劑生產(chǎn)項(xiàng)目
- 鼻部整形隆鼻術(shù)精選PPT
- 微信個(gè)人簡(jiǎn)歷
- 軟件測(cè)試jmeter中英文對(duì)照
- 反假貨幣培訓(xùn)考試題庫(kù)-相關(guān)法律法規(guī)及規(guī)范性文件知識(shí)考題
- 鉆井安全操作規(guī)程中英文
- 體育《網(wǎng)球正手擊球》教學(xué)PPT
- 富氫水水素水推廣方法
評(píng)論
0/150
提交評(píng)論