版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告題目:壓縮軟件(選做題)姓名: 學(xué)號(hào):指導(dǎo)老師: 時(shí)間:2015.09.06目錄一、設(shè)計(jì)內(nèi)容和要求3二、算法思想描述3三、程序結(jié)構(gòu)4四、結(jié)果與分析5結(jié)果5分析9五、收獲與體會(huì)9一、 設(shè)計(jì)內(nèi)容和要求設(shè)計(jì)內(nèi)容:壓縮軟件要求:建立一個(gè)文本文件A(可以是C/C+源程序),統(tǒng)計(jì)該文件中各字符頻率。首先對各字符進(jìn)行Huffman編碼,將該文件翻譯成Huffman編碼文件B;然后將Huffman編碼文件譯碼成文件C,并對文件A與C進(jìn)行比較。二、 算法思想描述1.Huffman編碼解碼思想:Huffman樹是一種加權(quán)路徑長度最短的二叉樹。編碼時(shí),是根據(jù)待編碼文件中記錄的關(guān)鍵字在文件中出
2、現(xiàn)的頻率進(jìn)行編碼,每個(gè)關(guān)鍵字都對應(yīng)一個(gè)編碼,頻率較高則編碼較短,頻率較低則編碼較長。Huffman樹解碼時(shí),根據(jù)記錄的關(guān)鍵字的編碼對文件進(jìn)行解碼。具體方法為依次選擇權(quán)值最小的兩個(gè)關(guān)鍵字作為左右孩子,其和作為父結(jié)點(diǎn)的權(quán)值,將其父結(jié)點(diǎn)代替兩個(gè)子結(jié)點(diǎn), 再次選擇權(quán)值最小作為左右孩子,依次進(jìn)行下去,直到所有的關(guān)鍵字結(jié)點(diǎn)都成為葉子結(jié)點(diǎn)。根據(jù)創(chuàng)建的Huffman樹來確定個(gè)關(guān)鍵字的01編碼,左孩子為0,右孩子為1。2.整體算法描述:首先讀入待壓縮文件,然后對每種字符出現(xiàn)的頻度進(jìn)行統(tǒng)計(jì),以頻率作為建立哈夫曼樹的權(quán)值。接著建立哈夫曼樹,對出現(xiàn)的每種字符進(jìn)行哈夫曼編碼。此時(shí)再讀入原文件,逐個(gè)字節(jié)進(jìn)行編碼,將得到的
3、編碼流逐個(gè)寫入文件。譯碼過程:讀入被壓縮文件,根據(jù)哈夫曼樹對文件中的字符逐個(gè)譯碼,將譯碼結(jié)果逐個(gè)寫入文件。三、 程序結(jié)構(gòu)壓縮軟件的程序流程圖壓縮軟件的函數(shù)功能結(jié)構(gòu)圖四、 結(jié)果與分析結(jié)果1. 界面2. 壓縮文件3. 解壓文件4. 比較分析1.檢查程序的正確性 本程序運(yùn)行時(shí)生成兩個(gè)文件,文件名分別為A.txt 和C.txt 。當(dāng)C.txt和原文件的內(nèi)容大小一致時(shí),說明程序功能已經(jīng)實(shí)現(xiàn)的,在VC的環(huán)境下,二者是相同的,僅文件名的差異。2.判斷此軟件的好壞從代碼的簡練性著手;從壓縮比的高低來判定,哈夫曼編碼的唯一性說明這種編碼文件的唯一性;五、 收獲與體會(huì)1. Huffman樹的建立,編碼,譯碼有了更
4、深層次的理解。文件的打開,關(guān)閉,讀入,輸出語句比較熟悉了。2. 對于測試用的數(shù)據(jù),比如用來測試的數(shù)據(jù)的個(gè)數(shù)可以設(shè)為常量,這樣方便為之后的測試做修改。3. 通過這次壓縮軟件的設(shè)計(jì),我熟練掌握了對文件的處理,兩個(gè)程序幾乎包含了所有處理文件的基本技巧,包括輸入,輸出,查找定位,查找文件對話框的使用等等。此外,更加熟練地掌握了huffman編碼的算法,通過壓縮軟件的實(shí)現(xiàn)更加透徹地理解了huffman編碼的壓縮功能。4. 通過學(xué)習(xí)網(wǎng)上的優(yōu)秀代碼,了解了怎樣將編碼按照二進(jìn)制方法寫入文件,即用字符移位的方式拼接成完整二進(jìn)制碼:假設(shè)原文件第一個(gè)字符是"A",8位2進(jìn)制為01000001,編
5、碼后為0110識(shí)別編碼第一個(gè)'0',那么我們就可以將其左移一位。下一個(gè)是'1',應(yīng)該|1,結(jié)果00000001 同理4位都做完,應(yīng)該是00000110,由于字節(jié)中的8位并沒有全部用完,我們應(yīng)該繼續(xù)讀下一個(gè)字符,根據(jù)編碼表繼續(xù)拼完剩下的4位,如果字符的編碼不足4位,還要繼續(xù)讀一個(gè)字符,如果字符編碼超過4位,那么我們將把剩下的位信息拼接到一個(gè)新的字節(jié)里。5. 一個(gè)漢字占兩個(gè)字節(jié),且最高位是1,如果是以整型數(shù)輸出的話,每個(gè)字節(jié)的ASCII值會(huì)是負(fù)數(shù),所以應(yīng)該設(shè)成為無符號(hào)數(shù)。6. 在用二進(jìn)制寫入文件時(shí),文件末尾的字符產(chǎn)生錯(cuò)誤解壓。反復(fù)查看后發(fā)現(xiàn)由于最后一個(gè)字符編碼拼接完后不夠一個(gè)字節(jié)的長度,后面自動(dòng)補(bǔ)零,造成解壓錯(cuò)誤。于是,加上lastsize記錄最后一個(gè)字節(jié)的有效長度,解壓時(shí)根據(jù)lastsize長度解壓最后一個(gè)字節(jié),解決了問題。7. 將HuffmanNode對象寫入文件時(shí),使用write太慢且程序代碼復(fù)雜,后重載了>>、&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 承包個(gè)人機(jī)井合同(2篇)
- 二零二五年度牛羊肉線上線下融合營銷合同3篇
- 二零二五年度光伏產(chǎn)品模具研發(fā)制造合同4篇
- 2025年度寵物用品跨境電商合作合同4篇
- 2025年度環(huán)保工程派遣員工勞動(dòng)合同樣本4篇
- 2025版綿陽市醫(yī)療機(jī)構(gòu)租賃合同4篇
- 2025年度城市綜合體施工合同(含裝修工程)2篇
- 2025年美團(tuán)外賣騎手服務(wù)區(qū)域劃分合同
- 2025年冷鏈物流送貨員專業(yè)培訓(xùn)及聘用合同
- 二零二五年度農(nóng)業(yè)產(chǎn)業(yè)鏈借貸合同協(xié)議
- 柴油墊資合同模板
- 湖北省五市州2023-2024學(xué)年高一下學(xué)期期末聯(lián)考數(shù)學(xué)試題
- 城市作戰(zhàn)案例研究報(bào)告
- 【正版授權(quán)】 ISO 12803:1997 EN Representative sampling of plutonium nitrate solutions for determination of plutonium concentration
- 道德經(jīng)全文及注釋
- 2024中考考前地理沖刺卷及答案(含答題卡)
- 多子女贍養(yǎng)老人協(xié)議書范文
- 安踏運(yùn)動(dòng)品牌營銷策略研究
- 彩票市場銷售計(jì)劃書
- 骨科抗菌藥物應(yīng)用分析報(bào)告
- 支付行業(yè)反洗錢與反恐怖融資
評論
0/150
提交評論