下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)三:哈夫曼樹與哈弗曼編碼u實(shí)驗(yàn)?zāi)康模豪斫夤蚵鼧涞暮x和性質(zhì)。掌握哈夫曼樹的存儲(chǔ)結(jié)構(gòu)以及描述方法。掌握哈夫曼樹的生成方法。掌握哈夫曼編碼的一般方法,并理解其在數(shù)據(jù)通訊中的應(yīng)用。2、 實(shí)驗(yàn)內(nèi)容:哈夫曼樹與哈弗曼編碼、譯碼a?問題描述:哈夫曼問題的提出可以參考教材P.145.利用哈弗曼編碼進(jìn)行通信可以大大提高通信利用率,縮短信息傳輸時(shí)間,降低傳輸成本。但是,這要求在發(fā)送端通過一個(gè)編碼系統(tǒng)對(duì)待傳數(shù)據(jù)預(yù)先編碼,在接收端將傳來的數(shù)據(jù)進(jìn)行譯碼。b.算法提示:參見教材P.147-148算法6.12、6.13的描述。3、 實(shí)驗(yàn)要求:建立哈夫曼樹,實(shí)現(xiàn)編碼,譯碼。初始化(Initialization)o從終端讀入字符集人小n,以及n個(gè)字符和n個(gè)權(quán)值,建立哈夫曼樹,并將它存于文件hfmTree中。編碼(Encoding)。利用已建好的哈夫曼樹(如不在內(nèi)存,則從文件hfmTree中讀入),對(duì)文件ToBeTran中的正文進(jìn)行編碼,然后將結(jié)果存入文件CodeFile中。.譯碼(Decoding)o利用已建好的哈夫曼樹將文件CodeFile中的代碼進(jìn)行譯碼,結(jié)果存入文件TextFile中。.輸出代碼文件(Print)。將文件CodeFile以緊湊格式顯示在終端上,每行50個(gè)代碼。同時(shí)將此字符形式的編碼文件寫入文件CodePimt中。.輸出哈夫曼樹(TreePnntuig)。將已在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹入表形式)顯示在終端上,同時(shí)將此字符形式的哈夫曼樹寫入文件TieePrmt中。測(cè)試數(shù)據(jù):設(shè)權(quán)值c=(a,b,c,d,e,f,g.h)w=(5,29,7,8,14,23,3,11),n=8°按照字符^或T,確定找左孩子或右孩子,則權(quán)值對(duì)應(yīng)的編碼為:5:0001,29:10,7:1110,8:111114:110,23:01,3:0000,11:0014、 實(shí)驗(yàn)程序:iiiclude<stdio.h>iiiclude<stdlib.h>mclude<string.h>^defineN100//赫夫曼樹和赫夫曼編碼的存儲(chǔ)表示tvpedefstmct{charch;unsignedmtweight;unsignedmtparentJchildjchild;}HTNode.*HuffiiianTree;tvpedefchar**HuffiuanCode;mtiiun(HuffiiianTree&HT,inti){〃函數(shù)voidselect()調(diào)用mtj.flag;mtk=65535;fbr(j=lJ<=ij-H-)if(HT[j].weight<k&&HT[j].parent==0)k=HT[j].weight,flag^j;HT[flag].parent=l;returnflag;voidSelect(HuffinaiiTree&HT.inti.iiit&si,mt&s2)sl=min(HT、i);s2=min(HT、i);}〃構(gòu)造赫夫曼樹HT,并求出n個(gè)字符的赫夫曼編碼HCvoidHuffinaiiCodmg(HuffinanTiee&HLHuffinanCode&HC,int*w,char*cha.iiitn)chaic;intfj,stailjn,sl,s2;HTNode*p;if(n<=l)return;m=2*n-l;HT=(HuffinanTree)malloc((m+l)*sizeof(HTNode));fbr(p=HT,-H-p4=1;i<=n;-H-i,-H-p){p->ch=cha[i];p->weight=w[i];p->paient=0;p->lcluld=0:p->icluld=0:p->weight=O;p->paient=O;p->lcluld=O:p->icluld=O:fbr(i=n+l;i<=m;++i)fSelect(HTj-l,sl,s2);HT[sl].parent=i;HT[s2].parent=i;HT[i].lchUd=sl;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;} HC=(HuffinanCode)nialloc((n+1)*sizeof(char*));char*cd=(char*)nialloc(n*sizeof(chai));cd[n-l]=^;fbr(i=l;i<=n;++i){stait=n-l;for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)if(HT[f].lcluld=c)cd[—start]=,Ol;elsecd[—start]-I1;HC[i]=(char*)nialloc((n-start)*sizeof(char));strcpy(HC[i],&cd[start]);printff字符為%c“,HT[i].ch);prmtf(n的編碼是%s\n\HC[i]);}fiee(cd);//赫夫曼譯碼函數(shù)voidDeCodmg(HuffinanTree&HT.HuffinanCode&HC,intn)charf{N];pmitf(”請(qǐng)輸入一串字符串:\n”);getchaiQ;gets(f);inti;intm、k=0;while(f!k]!=r\0,)fbr(i=l;i<=n;i++){m=stilen(HC[i]);if(strncmp(HC[i],f^k,m)==O){k=k+m;pnntf(”輸出%s的字符是”,HC[i]);pnntf(”%c\iT,HT[i].ch);}}}voiddisplavHT(HuffinanTree&HT.intn.iiitm){Hiti;pmitf("打印赫夫曼HC存儲(chǔ)結(jié)構(gòu)\n");pmitf(”編號(hào)字符權(quán)重雙親左孩子右孩子\n”);foi(i=l;i<=n;i-H-)pmHfT%d\t%c\t%d\t%d\t%d\t%d\ir丄HT[i]?chHT[i]?weight?HT[i]?paimrHT[i]?lcluld?HT[i].rcliild);for(i=n+1;i<=m;i-H-)\t%d\t%d\t%d\t%d'ii,\i.HT[i].weight,HT[i].parent.HT[i].lcliild.HT[i].rchild);}main(){HuffiiianTreeHT;HuffiiianCodeHC;iiitnj;printfC*********建赫夫曼樹,編碼和譯碼程序**************?);printf("\n輸入建赫夫曼樹元素的個(gè)數(shù):");scanf(”%d役&n);iiitm=2*n-l;chaicha[9];intw[9];fdr(i=l;i<=n;i++){pimtf(n?%d個(gè)元素=>字母和權(quán)重getchar();scanf(”%c%d",&cha[i],&w[i]);}HuffiiianCoding(HLHC,w,cha.n);displayHT(HTjian);
DeCoding(HLHCai);return0;}5、輸出結(jié)果:丁?* ■塢號(hào)宇符權(quán)重雙更1a592b29143c7104d8105e14126f2313?g398h11119811101
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度碼頭岸線使用權(quán)轉(zhuǎn)讓合同4篇
- 二零二五年度魯佳與配偶解除婚姻關(guān)系財(cái)產(chǎn)分配協(xié)議4篇
- 二零二五版鋼結(jié)構(gòu)與石材幕墻施工技術(shù)指導(dǎo)合同4篇
- 2025年度智能物流項(xiàng)目股權(quán)投資協(xié)議書4篇
- 二零二五版航空貨運(yùn)租賃服務(wù)協(xié)議3篇
- 2025年度總經(jīng)理聘任合同范本適用于高科技企業(yè)4篇
- 2025版教育產(chǎn)品銷售公司在線課程開發(fā)外包合同范本2篇
- 2025年度模特時(shí)尚秀場(chǎng)工作合同4篇
- 二零二五年度企業(yè)員工勞動(dòng)合同員工培訓(xùn)與發(fā)展基金合同
- 2024通信企業(yè)間光纖網(wǎng)絡(luò)建設(shè)與租賃合同
- 我的家鄉(xiāng)瓊海
- (2025)專業(yè)技術(shù)人員繼續(xù)教育公需課題庫(附含答案)
- 《互聯(lián)網(wǎng)現(xiàn)狀和發(fā)展》課件
- 【MOOC】計(jì)算機(jī)組成原理-電子科技大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年上海健康醫(yī)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫及答案解析
- 2024年湖北省武漢市中考語文適應(yīng)性試卷
- 非新生兒破傷風(fēng)診療規(guī)范(2024年版)解讀
- EDIFIER漫步者S880使用說明書
- 上海市華東師大二附中2025屆高二數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- C語言程序設(shè)計(jì)PPT(第7版)高職完整全套教學(xué)課件
- 頭頸外科臨床診療指南2021版
評(píng)論
0/150
提交評(píng)論