《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告

《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告

ID:10933515

大?。?08.00 KB

頁數(shù):39頁

時間:2018-07-09

《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告_第1頁
《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告_第2頁
《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告_第3頁
《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告_第4頁
《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告_第5頁
資源描述:

《《數(shù)據(jù)結(jié)構(gòu)實訓(xùn)》實訓(xùn)報告》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。

1、計算機工程系計算機12級卓越計Y121班數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告1題目與要求1.1問題提出本人計劃編寫一個哈夫曼編碼譯碼器,主要是進行信息通信,實現(xiàn)在發(fā)送端通過一個編碼系統(tǒng)對待傳數(shù)據(jù)預(yù)先編碼;在接收端將傳來的數(shù)據(jù)進行譯碼(復(fù)原)的信息收發(fā)站。1.2本系統(tǒng)涉及的知識點最優(yōu)二叉樹、數(shù)組、循環(huán)、函數(shù)、分支、類型結(jié)構(gòu)定義、文件、遞歸1.3功能要求所要實現(xiàn)的題目功能:1)I:初始化(Initialization)。從終端讀入字符集大小n及n個字符和m個權(quán)值,建立哈夫曼樹,并將它存于文件hfmtree中。(2)C:編碼(Coding)。利用已建好的哈夫曼樹(如不在內(nèi)存,則

2、從文件hfmtree中讀入),對文件tobetrans中的正文進行編碼,然后將結(jié)果存入文件codefile中。(3)D:解碼(Decoding)。利用已建好的哈夫曼樹將文件codefile中的代碼進行譯碼,結(jié)果存入文件textfile中。(4)P:打印代碼文件(Print)。將文件codefile以緊湊格式顯示在終端上,每行50個代碼。同時,將此字符形式的編碼文件寫入文件codeprint中。(5)T:打印哈夫曼樹(Treeprinting)。將已在內(nèi)存中的哈夫曼樹以直觀的方式(樹或凹人表形式)顯示在終端上,同時將此字符形式的哈夫曼樹寫入文件treep

3、rint中。2功能設(shè)計2.1算法設(shè)計本系統(tǒng)需要實現(xiàn)的功能要求:1、利用switch語句設(shè)計如圖1所示的主菜單(圖中的文字宋體5號):1、初始化(Init)39計算機工程系計算機12級卓越計Y121班數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告2、編碼(Coding)3、解碼(Decoding)4、打印代碼(print)5、打印哈夫曼樹(Treeprint)6、退出請輸入你的選擇(1~6):圖1哈夫曼編碼譯碼器主菜單2、(1)選擇2后,調(diào)用編碼子菜單函數(shù),進入函數(shù)后利用switch語句實現(xiàn)一個如圖2所示的菜單,該菜單中1、2選項調(diào)用一個函數(shù)。圖2編碼(coding)子菜單(2)選擇

4、2后,調(diào)用解碼碼子菜單函數(shù),進入函數(shù)后利用switch語句實現(xiàn)一個如圖3所示的菜單,該菜單中1、2選項調(diào)用一個函數(shù).圖3解碼(Decoding)子菜單39計算機工程系計算機12級卓越計Y121班數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告3、根據(jù)所選菜單編寫相應(yīng)代碼:1)初始化(Init):利用循環(huán)將字符存入結(jié)構(gòu)體數(shù)組,再利用循環(huán)從文本文件中取出字符統(tǒng)計字符的頻率存入結(jié)構(gòu)體數(shù)組中,再利用循環(huán)將其作為權(quán)值存入哈夫曼樹的結(jié)構(gòu)體數(shù)組中再循環(huán)尋找最小結(jié)點值建立哈夫曼樹,然后再將其創(chuàng)建哈夫曼樹存入文件中,最后對樹進行逆向求葉子結(jié)點的編碼并將其編碼表存入文件和輸出在終端上。具體程序為:voi

5、dInitialization(HuffmanTree&HT,HuffmanCode&HC,List*L)//初始化{Statistics(L,N);CreateHT_HC(HT,HC,L,N);printf("Initializationsucceed!!!!!");}///////////////////////////////統(tǒng)計文件中的字符(字符是從Ascll32--126)頻率,將其頻率作為權(quán)值建立哈夫曼樹/////////voidStatistics(List*L,intn){FILE*fp;inti,j;intm;char

6、ch;for(i=0,j=32;j<=126;j++){L[i].chars=j;i++;}if((fp=fopen("test.txt","r"))==NULL)//打開test.txt文件{printf("cannotopenthefile!!!");exit(0);}while((ch=fgetc(fp))!=EOF)//從文件中逐個取出字符直到文件結(jié)尾{m=ch-32;//m等于字符的Ascll碼值減去空格的Ascll碼,其值就為這個字符存放數(shù)組的下標L[m].weight++;}39計算機工程系計算機12級卓越計Y121班數(shù)據(jù)結(jié)構(gòu)實訓(xùn)報告fc

7、lose(fp);}/////////////////////////////////////////////////求解最小權(quán)值的操作/////////////////intmin(HuffmanTreeHT,inti){intj,flag=0;unsignedintk=99999;//定義k足夠大for(j=1;j<=i;j++)//循環(huán)在1-i個結(jié)點中尋找權(quán)值最小的結(jié)點if(HT[j].weight

8、rent置為1,標志這個結(jié)點已找過returnflag;}/////////////構(gòu)造哈夫曼

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

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

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