![2020年編輯Huffman編碼器總結(jié)編輯_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/ce806406-a6e2-4aba-8392-42067dbf8275/ce806406-a6e2-4aba-8392-42067dbf82751.gif)
![2020年編輯Huffman編碼器總結(jié)編輯_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/ce806406-a6e2-4aba-8392-42067dbf8275/ce806406-a6e2-4aba-8392-42067dbf82752.gif)
![2020年編輯Huffman編碼器總結(jié)編輯_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-11/25/ce806406-a6e2-4aba-8392-42067dbf8275/ce806406-a6e2-4aba-8392-42067dbf82753.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#include<iostream>#include"string.h" using namespace std;#define MAX 100#define N 26typedef struct/ 哈夫曼樹的結(jié)點(diǎn)unsigned int weight;unsigned int parent,lchild,rchild;HTNode,*Huffmantree;typedef struct/ 字符存儲(chǔ)結(jié)點(diǎn)信息char data; /待編碼的字符int weight; /字符的權(quán)值char codeN; /字符的編碼 HTCode;/ 初始化結(jié)點(diǎn)信息void Ini
2、tCode(HTCode *Hr,int &n)cout<<" 請(qǐng)輸入字符編碼的個(gè)數(shù) n: " cin>>n;cout<<" 請(qǐng)輸入待編碼字符以及相應(yīng)的權(quán)值: "<<endl;for(int i = 1;i <= n;i+)cin>>(Hr+i)->data>>(Hr+i)->weight;void Select(Huffmantree &HT,int end,int *s1,int *s2)/ 在 0end 之間 ,找出最小和次小的兩個(gè)結(jié)點(diǎn)序號(hào) ,
3、返回 S1,S2int i;int min1 = MAX;int min2;for (i = 1;i <= end;i+)/ 找最小的結(jié)點(diǎn)序號(hào)if (HT+i)->parent = 0 && (HT+i)->weight<=min1)*s1 = i;min1 = (HT+i)->weight;min2 = MAX;for(i = 1;i <= end;i+)/ 找次小結(jié)點(diǎn)的序號(hào)if (HT+i)->parent = 0 && *s1 != i && min2 >= (HT+i)->weight
4、)*s2 = i;min2 = (HT+i)->weight;/ 初始化哈夫曼樹 , 并把信息存入 Hrvoid InitHfmtree(Huffmantree &Ht,HTCode Hr,int &n)if(n <= 1) return;int m,start,i,j,f;int s1,s2;m = 2*n-1; /n 個(gè)頂點(diǎn)有 m 個(gè)節(jié)點(diǎn)Ht = (Huffmantree)malloc(m+1)*sizeof(HTNode);Huffmantree P;P = Ht+1;for(i = 1;i <= m;i+,P+) /0 號(hào)單元沒用if(i <=
5、n) P->weight = Hri.weight;else P->weight = 0;P->lchild = 0;P->rchild = 0;P->parent = 0;for(i = n+1;i <= m;i+) / 建赫夫曼樹Select(Ht,i-1,&s1,&s2);/ 尋找匹配雙親節(jié)點(diǎn)(Ht+s1)->parent = i;(Ht+s2)->parent = i;(Ht+i)->lchild = s1;(Ht+i)->rchild = s2;(Ht+i)->weight = (Ht+s1)->
6、weight + (Ht+s2)->weight;char *code;code = (char *)malloc( n*sizeof(char);coden-1 = '0'for(i = 1;i <= n;i+)/ 編碼存入 Hr->codestart = n-1;for(j = i,f = Htj.parent;f != 0;j = f,f = Htf.parent)if(Htf.lchild = j)code-start = '0'elsecode-start = '1'strcpy(Hri.code,&codes
7、tart);cout<<" 字符編碼初始化完成! "<<endl;void Encoding(HTCode *Hr,int n)/ 編碼int i,j;char *encode;encode = (char *)malloc( n*sizeof(char);cout<<" 請(qǐng)選擇你想要編碼的字符: "<<endl;cin>>encode;for(i = 0;encodei!='0'i+)j = 1;while(encodei != Hrj.data) j+;if(j>n)&
8、quot;<<endl;cout<<" 您輸入編碼 "<<encodei<<" 錯(cuò)誤!elsecout<<Hrj.data<<" 的編碼是 "<<Hrj.code<<endl;/cout<<" 編碼已經(jīng)結(jié)束! "<<endl;/cout<<Hrj.data<<" 的編碼是 "<<Hrj.code<<endl;cout<<&quo
9、t; 編碼已經(jīng)結(jié)束! "<<endl;void Decoding(HTCode *Hr,int n)/ 譯碼int j=1;char *decode;decode = (char *)malloc( n*sizeof(char);cout<<" 請(qǐng)輸入你想要譯碼的字符串: "<<endl;cin>>decode;for(j=1;j<=n;j+)if(strcmp(decode,Hrj.code) != 0);else break;if(j>n)cout<<" 您輸入譯碼的字符串錯(cuò)誤!
10、 "<<endl;elsecout<<Hrj.code<<" 的譯碼是 "<<Hrj.data<<endl;cout<<" 譯碼已經(jīng)結(jié)束! "<<endl;void TreePrint(Huffmantree &HT,HTCode Hr,int n)/ 打印各個(gè)結(jié)點(diǎn)信息int i,j;cout<<"nn*打印哈夫曼樹*n"<<endl;cout<<" 結(jié)點(diǎn) weight parent lc
11、hild rchild"<<endl;for (j=1; j<=n; j+) printf("n%4d(%c)%5d%8d%8d%8dn",j,Hrj.data,HTj.weight,HTj.parent,HTj.lc hild,HTj.rchild);for (i=n+1; i <= 2*n-1; i+) printf("n%4d%8d%8d%8d%8dn",i,HTi.weight,HTi.parent,HTj.lchild,HTi.rchi ld);void main()Huffmantree Ht;HTCode
12、HrN;cout<<"t* 歡迎使用赫夫曼編譯碼 *"<<endl;int n = 0;char cmd;do印赫夫曼樹cout<<"* 初始化赫夫曼樹( I ) 編碼( E) 譯碼( T) 離開( Q) *"<<endl;cin>>cmd;switch(cmd)case 'I':InitCode(Hr,n);InitHfmtree(Ht,Hr,n);break;case 'E':Encoding(Hr,n);break;case 'D':Decoding(Hr,n);bre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 部編初中歷史八下第1課中華人民共和國成立教案
- 2025年全球及中國大型不銹鋼鑄件行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球化妝品級(jí)枯草菌脂肽鈉行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025-2030全球光纖導(dǎo)管靜脈激光治療行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國銅纜高速連接器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025國際(非獨(dú)占)商標(biāo)使用許可合同
- 2025農(nóng)業(yè)種植生產(chǎn)產(chǎn)銷合同書
- 餐飲業(yè)合同年
- 2025室內(nèi)裝修設(shè)計(jì)合同范本
- 房屋租賃續(xù)簽合同模板
- 2025年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 醫(yī)保政策與健康管理培訓(xùn)計(jì)劃
- 策略與博弈杜塔中文版
- 無人化農(nóng)場項(xiàng)目可行性研究報(bào)告
- 2024屆上海市金山區(qū)高三下學(xué)期二模英語試題(原卷版)
- 學(xué)生春節(jié)安全教育
- 2024-2025年校長在教研組長和備課組長會(huì)議上講話
- 2025屆江蘇省常州市高級(jí)中學(xué)高三第二次模擬考試語文試卷含解析
- 高三日語一輪復(fù)習(xí)助詞「で」的用法課件
- 2024-2030年中國銣銫及其化合物行業(yè)深度調(diào)研及投資戰(zhàn)略分析報(bào)告
- 散貨物流行業(yè)市場調(diào)研分析報(bào)告
評(píng)論
0/150
提交評(píng)論