壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計

上傳人:yo****e 文檔編號:57885300 上傳時間:2022-02-25 格式:DOCX 頁數(shù):9 大?。?20.86KB
收藏 版權(quán)申訴 舉報 下載
壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第1頁
第1頁 / 共9頁
壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第2頁
第2頁 / 共9頁
壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計_第3頁
第3頁 / 共9頁

下載文檔到電腦,查找使用更方便

16 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計》由會員分享,可在線閱讀,更多相關(guān)《壓縮軟件數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、《數(shù)據(jù)結(jié)構(gòu)》課程設(shè)計實(shí)驗(yàn)報告 題目:壓縮軟件(選做題) 姓名: 學(xué)號: 指導(dǎo)老師: 時間:2015.09.06 目錄 一、 設(shè)計內(nèi)容和要求 3 二、 算法思想描述 3 三、 程序結(jié)構(gòu) 4 四、 結(jié)果與分析 5 結(jié)果 5 分析 9 五、 收獲與體會 9 一、 設(shè)計內(nèi)容和要求 設(shè)計內(nèi)容:壓縮軟件 要求: 建立一個文本文件A(可以是C/C++源程序),統(tǒng)計該文件中各字符頻率。首先對各字符進(jìn)行Huffman編碼,將該文件翻譯成Huffman編碼文件B;然后將Huffman編

2、碼文件譯碼成文件C,并對文件A與C進(jìn)行比較。 二、 算法思想描述 1.Huffman編碼解碼思想: Huffman樹是一種加權(quán)路徑長度最短的二叉樹。編碼時,是根據(jù)待編碼文件中記錄的關(guān)鍵字在文件中出現(xiàn)的頻率進(jìn)行編碼,每個關(guān)鍵字都對應(yīng)一個編碼,頻率較高則編碼較短,頻率較低則編碼較長。Huffman樹解碼時,根據(jù)記錄的關(guān)鍵字的編碼對文件進(jìn)行解碼。 具體方法為依次選擇權(quán)值最小的兩個關(guān)鍵字作為左右孩子,其和作為父結(jié)點(diǎn)的權(quán)值,將其父結(jié)點(diǎn)代替兩個子結(jié)點(diǎn), 再次選擇權(quán)值最小作為左右孩子,依次進(jìn)行下去,直到所有的關(guān)鍵字結(jié)點(diǎn)都成為葉子結(jié)點(diǎn)。根據(jù)創(chuàng)建的Huffman樹來確定個關(guān)鍵字的01編碼,左孩子為0

3、,右孩子為1。 2.整體算法描述: 首先讀入待壓縮文件,然后對每種字符出現(xiàn)的頻度進(jìn)行統(tǒng)計,以頻率作為建立哈夫曼樹的權(quán)值。接著建立哈夫曼樹,對出現(xiàn)的每種字符進(jìn)行哈夫曼編碼。此時再讀入原文件,逐個字節(jié)進(jìn)行編碼,將得到的編碼流逐個寫入文件。譯碼過程:讀入被壓縮文件,根據(jù)哈夫曼樹對文件中的字符逐個譯碼,將譯碼結(jié)果逐個寫入文件。 三、 程序結(jié)構(gòu) 壓縮軟件的程序流程圖 壓縮軟件的函數(shù)功能結(jié)構(gòu)圖 四、 結(jié)果與分析 結(jié)果 1. 界面 2. 壓縮文件 3. 解壓文件 4. 比較 分析 1.檢查程序的正確性 本程序運(yùn)行時生成兩

4、個文件,文件名分別為A.txt 和C.txt 。當(dāng)C.txt和原文件的內(nèi)容大小一致時,說明程序功能已經(jīng)實(shí)現(xiàn)的,在VC的環(huán)境下,二者是相同的,僅文件名的差異。 2.判斷此軟件的好壞 從代碼的簡練性著手; 從壓縮比的高低來判定,哈夫曼編碼的唯一性說明這種編碼文件的唯一性; 五、 收獲與體會 1. Huffman樹的建立,編碼,譯碼有了更深層次的理解。文件的打開,關(guān)閉,讀入,輸出語句比較熟悉了。 2. 對于測試用的數(shù)據(jù),比如用來測試的數(shù)據(jù)的個數(shù)可以設(shè)為常量,這樣方便為之后的測試做修改。 3. 通過這次壓縮軟件的設(shè)計,我熟練掌握了對文件的處理,兩個程序幾乎包含了所有處理文件的基本

5、技巧,包括輸入,輸出,查找定位,查找文件對話框的使用等等。此外,更加熟練地掌握了huffman編碼的算法,通過壓縮軟件的實(shí)現(xiàn)更加透徹地理解了huffman編碼的壓縮功能。 4. 通過學(xué)習(xí)網(wǎng)上的優(yōu)秀代碼,了解了怎樣將編碼按照二進(jìn)制方法寫入文件,即用字符移位的方式拼接成完整二進(jìn)制碼:假設(shè)原文件第一個字符是"A",8位2進(jìn)制為01000001,編碼后為0110識別編碼第一個'0',那么我們就可以將其左移一位。下一個是'1',應(yīng)該|1,結(jié)果00000001 同理4位都做完,應(yīng)該是00000110,由于字節(jié)中的8位并沒有全部用完,我們應(yīng)該繼續(xù)讀下一個字符,根據(jù)編碼表繼續(xù)拼完剩下的4位,如果字符的編碼不

6、足4位,還要繼續(xù)讀一個字符,如果字符編碼超過4位,那么我們將把剩下的位信息拼接到一個新的字節(jié)里。 5. 一個漢字占兩個字節(jié),且最高位是1,如果是以整型數(shù)輸出的話,每個字節(jié)的ASCII值會是負(fù)數(shù),所以應(yīng)該設(shè)成為無符號數(shù)。 6. 在用二進(jìn)制寫入文件時,文件末尾的字符產(chǎn)生錯誤解壓。反復(fù)查看后發(fā)現(xiàn)由于最后一個字符編碼拼接完后不夠一個字節(jié)的長度,后面自動補(bǔ)零,造成解壓錯誤。于是,加上lastsize記錄最后一個字節(jié)的有效長度,解壓時根據(jù)lastsize長度解壓最后一個字節(jié),解決了問題。 7. 將HuffmanNode對象寫入文件時,使用write太慢且程序代碼復(fù)雜,后重載了>>、<<,用來輸入輸出該對象.且從文件中讀入字符用>>的話,程序會自動把空格符,回車符之類的控制符號去掉,所以用write()方法來寫到文件。 9 / 9

展開閱讀全文
溫馨提示:
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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!