利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮

利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮

ID:29213135

大小:63.50 KB

頁(yè)數(shù):12頁(yè)

時(shí)間:2018-12-17

利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮_第1頁(yè)
利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮_第2頁(yè)
利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮_第3頁(yè)
利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮_第4頁(yè)
利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮_第5頁(yè)
資源描述:

《利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。

1、實(shí)用標(biāo)準(zhǔn)文案利用哈夫曼編碼實(shí)現(xiàn)壓縮和解壓縮1.問(wèn)題描述利用哈夫曼編碼,實(shí)現(xiàn)壓縮和解壓縮的數(shù)據(jù)元素具有如下形式:結(jié)點(diǎn):weightparentlchildrchildweight:存儲(chǔ)結(jié)點(diǎn)的權(quán)值parent:是結(jié)點(diǎn)雙親在向量中的下標(biāo)lchild:結(jié)點(diǎn)的左兒子向量下標(biāo)rchild:結(jié)點(diǎn)右兒子向量下標(biāo)編碼:bitschstartbits:位串,存放編碼ch:字符start:編碼在位串中的起始位置文件操作記錄:bcountlchparentbitsrchb:記錄字符在數(shù)組中的位置count:字符出現(xiàn)頻率(權(quán)值)lch、rch、parent:定義哈夫曼樹(shù)指針變量bits[256]:定義存儲(chǔ)哈夫曼編

2、碼的數(shù)組2.功能需求對(duì)于給定的一組字符,可以根據(jù)其權(quán)值進(jìn)行哈夫曼編碼,并能輸出對(duì)應(yīng)的哈夫曼樹(shù)和哈夫曼編碼;實(shí)現(xiàn)哈夫曼解碼。能夠分析文件,統(tǒng)計(jì)文件中出現(xiàn)的字符,再對(duì)文件進(jìn)行編碼,實(shí)現(xiàn)文件的壓縮和解壓縮,能夠?qū)τ谖募膲嚎s,比例進(jìn)行統(tǒng)計(jì),能夠打印文件。3.實(shí)現(xiàn)要點(diǎn)(1)構(gòu)造哈弗曼樹(shù)過(guò)程中,首先將初始森林的各根結(jié)點(diǎn)的雙親和左、右兒子指針置-1;葉子在向量T的前n個(gè)分量中,構(gòu)成初始森林的n個(gè)結(jié)點(diǎn);對(duì)森林中的樹(shù)進(jìn)行n次合并,并產(chǎn)生n-1個(gè)新結(jié)點(diǎn),依次放入向量T的第i個(gè)分量中。(2)編碼過(guò)程中,從葉子T[i]出發(fā),利用雙親的指針找到雙親T[p];再根據(jù)T[p]精彩文檔實(shí)用標(biāo)準(zhǔn)文案的孩子指針可以知道T

3、[i]是T[p]的左兒子還是右兒子,若是左兒子,則生成代碼0,否則生成代碼1;(3)在文件壓縮和解壓過(guò)程中,主要參考網(wǎng)上資料,每個(gè)步驟都基本理解,并注上了詳細(xì)解析。4.函數(shù)定義功能:輸入權(quán)重,構(gòu)造一棵哈弗曼樹(shù)voidhuffman(hftreeT){if(n<1

4、

5、n>m)return;inti,j,p1,p2;floatsmall1,small2;//初始化cout<<"請(qǐng)輸入葉子權(quán)重(5個(gè)):"<

6、>T[i].weight;}for(i=n;i

7、=p1;T[i].rchild=p2;T[i].weight=small1+small2;}cout<<"創(chuàng)建成功!"<>codes[i].ch;start=n;c=i;p=T[i].parent;while(p!=-1){start--;if(T[p].lchild==c)codes[i].bits[start]='0';elsecodes[i].bi

8、ts[start]='1';c=p;p=T[p].parent;}codes[i].start=start;}精彩文檔實(shí)用標(biāo)準(zhǔn)文案cout<<"輸入成功!:"<

9、i=m-1;while(cin>>b,b!=endflag){if(b==0)i=T[i].lchild;elsei=T[i].rchild;if(T[i].lchild==-1){cout<

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

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

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(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)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。