資源描述:
《《哈夫曼編碼譯碼課程設(shè)計》報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、計算機與信息工程系《實踐環(huán)節(jié)名稱》報告專業(yè):計算機科學(xué)與技術(shù)班級:********學(xué)號:*********姓名:楊明英報告完成日期:2011/6/10指導(dǎo)教師:***評語:成績:批閱教師簽名:批閱時間:目錄1.問題描述……………………………………………………………12.基本要求……………………………………………………………13.?dāng)?shù)據(jù)結(jié)構(gòu)……………………………………………………………14.總體設(shè)計……………………………………………………………15.詳細設(shè)計……………………………………………………………25.1主函數(shù)voidmain()………………………………………………
2、………25.2建立文件voidjianliwenjian()…………………………………………35.3輸入原文voidluruyuanwen()…………………………………………45.4創(chuàng)建哈夫曼樹voidchuangjian()………………………………………55.5編碼voidbianma()……………………………………………………65.6對哈夫曼碼譯碼voidyiwen()…………………………………………75.7保存譯文voidbaocunyiwen()……………………………………………85.8輸出原文voidduquyuanwen()…………………………………………
3、95.9輸出原文編碼voidduqubianma()…………………………………………105.10輸出譯文voidduquyiwen()……………………………………………116.測試與調(diào)試…………………………………………………………117.源程序清單…………………………………………………………88.實驗心得……………………………………………………………281.問題描述打開一篇英文文章,統(tǒng)計該文章中每個字符出現(xiàn)的次數(shù),然后以它們作為權(quán)值,設(shè)計一個哈夫曼編/譯碼系統(tǒng)。2.基本要求以每個字符出現(xiàn)的次數(shù)為權(quán)值,建立哈夫曼樹,求出哈夫曼編碼,對文件yuanwen中的正文進行編碼,
4、將結(jié)果存到文件yiwen中,再對文件yiwen中的代碼進行譯碼,結(jié)果存到textfile中。3.數(shù)據(jù)結(jié)構(gòu)charCH[N];//記錄原文字符數(shù)組charYW[N];//記錄譯文字符數(shù)組typedefchar*Hcode[m+1];//存放哈夫曼字符編碼串的頭指針的數(shù)組typedefstruct{chara;intnum;}dangenode;//記錄單個字符的類別和出現(xiàn)的次數(shù)typedefstruct{dangenodeb[m];inttag;}jilunode;//統(tǒng)計原文出現(xiàn)的字符種類和數(shù)量typedefstructnode//靜態(tài)三叉的哈夫曼樹的定義{intwe
5、ight;//結(jié)點的權(quán)值intparent;//雙親的下標(biāo)intLchild;//左孩子結(jié)點的下標(biāo)intRchild;//右孩子結(jié)點的下標(biāo)}htnode,hn[M+1];//hn是結(jié)構(gòu)數(shù)組類型,0號單元不用4.總體設(shè)計功能函數(shù)模塊劃分voidmain()//主函數(shù)voidjianliwenjian()//建立存儲原文的文件yuanwenvoidluruyuanwen()//通過程序錄入原文到文件yuanwen中voidmin_2(hnht,intn,int*tag1,int*tag2)//選擇權(quán)值較小的兩個結(jié)點voidchuangjian(jilunode*jilu,
6、hnht)//建立哈夫曼樹voidbianma(jilunode*jilu,hnht,Hcodehc,intn)//對原文進行編碼voidbianmabaocun(Hcodehc,jilunode*jilu)//保存編碼在文件yiwen中voidyiwen(Hcodehc,jilunode*jilu)//讀取yiwen中的編碼,并將其翻譯為原文voidbaocunyiwen()//將翻譯的譯文保存到文件textfile中voidduqubianma()//在編碼文件yiwen中讀取編碼voidduquyiwen()//從文件textfile中讀取譯文281.詳細設(shè)計1
7、.1主函數(shù)voidmain()開始Inttep=1;Ntep=1Ya=1NYNa=2Yjianliwenjian();NYa=3luruyuanwen();NYc=1chuangjian(jilu,humtree);Na=4Nc=1YYtep=0;Nbianma(jilu,humtree,hc,jilu->tag);hc,jilu);Yyiwen(hc,jilu);tep=0;a=5system("cls");YNa=6duquyuanwen();Bianmabaocun(hc,jiolu);system("cls");break;Ybaocunyi