哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告

哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告

ID:42605929

大?。?.42 MB

頁數(shù):15頁

時(shí)間:2019-09-18

哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告_第1頁
哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告_第2頁
哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告_第3頁
哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告_第4頁
哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告_第5頁
資源描述:

《哈夫曼編碼與解碼實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。

1、數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告題目:哈夫曼編碼與解碼學(xué)生姓名:侯清源學(xué)號(hào):1021111118班級(jí):102111111指導(dǎo)教師:張軍2012年6月1日15東華理工大學(xué)軟件學(xué)院軟件工程系目錄需求分析說明總體設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí)現(xiàn)部分程序測(cè)試部分實(shí)驗(yàn)總結(jié)附圖:開發(fā)環(huán)境和工程文件介紹15東華理工大學(xué)軟件學(xué)院軟件工程系1,需求分析說明A,通信線路中實(shí)現(xiàn)信息的最大傳送,利用變長(zhǎng)編碼的方式,可以有效充分利用帶寬,實(shí)現(xiàn)信息傳送前的壓縮。B,在文件保存時(shí),利用哈夫曼編碼的方式,壓縮文件??梢詫?shí)現(xiàn)硬盤存儲(chǔ)最大的信息量。C,實(shí)驗(yàn)?zāi)康模?,.學(xué)會(huì)使用哈夫曼進(jìn)行對(duì)文本文件的編碼與譯碼。2,通過對(duì)哈夫曼的編碼與譯

2、碼,能夠理解通信領(lǐng)域中的數(shù)據(jù)傳輸?shù)膲嚎s原理。3,通過對(duì)哈夫曼的編碼/譯碼器的研究與分析,能夠徹底的理解軟件設(shè)計(jì)的一般步驟和方法,靈活地運(yùn)用各種數(shù)據(jù)結(jié)構(gòu)進(jìn)行操作,熟練地把所學(xué)地?cái)?shù)據(jù)結(jié)構(gòu)應(yīng)用地軟件開發(fā)當(dāng)中,提高軟件設(shè)計(jì)水平,增強(qiáng)程序設(shè)計(jì)能力。D,實(shí)現(xiàn)功能壓縮:實(shí)現(xiàn)對(duì)用戶輸入的字符串壓縮,并在終端顯示相應(yīng)字符對(duì)應(yīng)的頻率,編碼,編碼長(zhǎng)度,平均編碼長(zhǎng)度,字符個(gè)數(shù)。并顯示字符串編碼后的二進(jìn)制文件。解壓:實(shí)現(xiàn)對(duì)壓縮后的二進(jìn)制文件解壓,還原為原來的字符串。并顯示在終端。和用戶輸入的字符串比較。2,總體設(shè)計(jì)2,1開發(fā)環(huán)境介紹編譯器:gcc4.6.3編輯器:vim7.0附插件:ctags、t

3、aglist、autocomplpop。打開syntaxenable、syntaxon、setnumber。操作系統(tǒng):Ubuntu12.04LTS硬件環(huán)境:Processor:Intel(R)Core?i5-2430CPU@2.40GHzVendor:AcerTravelMate4750GBusinessLaptopMemory:4G2.2系統(tǒng)框架系統(tǒng)結(jié)構(gòu)流程15東華理工大學(xué)軟件學(xué)院軟件工程系算法思想描述(文字和圖)1,首先,根據(jù)用戶輸入的字符串得到字符頻率。根據(jù)頻率得到頻率數(shù)據(jù),對(duì)該頻率數(shù)組由棧頂?shù)綏5陀尚〉酱笈帕?,同時(shí)將從小到大順序存入優(yōu)先隊(duì)列2,構(gòu)造哈弗曼樹,過程如

4、下:從棧中取出兩個(gè)最小頻率。按照左小右大的原則。構(gòu)造哈弗曼樹。同時(shí)生成父節(jié)點(diǎn),即頻率和。同時(shí)父節(jié)點(diǎn)入棧,重新按照由小到大的順序排列。3,重復(fù)2過程,直到棧為空。4,編碼解碼的過程編碼時(shí),根據(jù)哈弗曼樹,左0右1,建立map>容器,右邊存儲(chǔ)字符,右邊存儲(chǔ)編碼。編碼時(shí),從根節(jié)點(diǎn)遞歸遍歷算法編碼,左節(jié)點(diǎn)編碼時(shí)添加0,右節(jié)點(diǎn)編碼添加1解碼時(shí),也是根據(jù)哈弗曼編碼樹,從根節(jié)點(diǎn)開始,如果碰到編碼的首部是1,往右遍歷;如果是0,往左遍歷。直到葉子節(jié)點(diǎn),遍歷匹配字符成功,返回匹配的字符。同時(shí)回到根節(jié)點(diǎn),重復(fù)該步驟,翻譯下一個(gè)編碼。1,詳細(xì)設(shè)計(jì)3.1,類模板

5、設(shè)計(jì)1,類模板設(shè)計(jì)資料:高永平老師給的資料:《數(shù)據(jù)結(jié)構(gòu)(STL框架)》王曉東編著,陳道蓄主審2,主要是STL編程,并利用了vectormapqueue等容器,使用了容器的迭代器iterator15東華理工大學(xué)軟件學(xué)院軟件工程系哈夫曼樹類結(jié)構(gòu)模板Hafftree類模板原型TemplateHufftree+templateHufftree(InputIteratorbegin,InputIteratorend);構(gòu)造哈夫曼樹+~Hufftree()析構(gòu)函數(shù)+t

6、emplatevectorencode(InputIteratorbegin,InputIteratorend);編碼+vectorencode(DataTypeconst&value);返回字符編碼+doubleencodelength(DataTypeconst&value);返回字符編碼長(zhǎng)度+templatevoiddecode(vectorconst&v,OutputIteratoriter);對(duì)字符串解碼-classNode;字符串節(jié)

7、點(diǎn)類-classNodeOrder;排序時(shí)用的類-Node*tree;根節(jié)點(diǎn)-typedefmap>encodemap;encodemapencodetable;編碼表Node類成員:templateNode+Frequencyfreqeuency;權(quán)或頻率+Node*leftChild;左孩子指針+unionNode*rightChild;右孩子指針DataType*data;字符域指針Template

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

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

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