哈夫曼樹實驗報告2_第1頁
哈夫曼樹實驗報告2_第2頁
哈夫曼樹實驗報告2_第3頁
哈夫曼樹實驗報告2_第4頁
免費預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、、實驗?zāi)康檬炀氄莆斩鏄鋺?yīng)用(HUffman編碼)得基本算法實現(xiàn)。二、實驗內(nèi)容1.對輸入得一串電文字符實現(xiàn)Huffman編碼,再對Huffman編碼生成得代碼串進行譯碼輸出電文字符串。實現(xiàn)功能如下:HUffman樹得建立Huffman編碼得生成編碼文件得譯碼三、實驗要求設(shè)計思路:數(shù)據(jù)結(jié)構(gòu):#define n100?/葉子結(jié)點數(shù)#define m 2*n1 / Huffman樹中結(jié)點總數(shù)typedef struct? intweight;/權(quán)值?int Ichild , rchild, pare nt;/左右孩子及雙親指針HTNode;/樹中結(jié)點類型typedef HTNode HuffmanT

2、reem+1;0/?號單元不用 主要實現(xiàn)函數(shù):統(tǒng)計字符串中字符得種類以及各類字符得個數(shù)得函數(shù)構(gòu)造Huffman樹得函數(shù)Huffman編碼得函數(shù)建立正文得編碼文件得函數(shù)代碼文件得譯碼函數(shù)主函數(shù)四、實驗概要設(shè)計1)功能框圖Huffman樹得建立從葉子到根逆向求編碼anHuffman編碼得生成編碼文件得譯碼退出實驗報告實驗名稱專業(yè)班級指導(dǎo)教師計科三班日期Huffman編碼姓名學(xué)號20142014、12 2、2020編碼程序五、使用說明1、運行環(huán)境:VC+6、02、首先選擇主控菜單中得操作1,即建表,然后進行其它操作.六.實驗截圖七實驗體會1、 構(gòu)建哈夫曼樹得關(guān)鍵在于 找最小樹;在F中選擇兩棵根結(jié)點權(quán)

3、值最小得樹作為左右子樹構(gòu)造一棵新 得二叉樹,且至新得二叉樹得根結(jié)點得權(quán)值為其左右子樹上根結(jié)點得權(quán)值之與。_2、 由于學(xué)習(xí)得不足沒有實現(xiàn)編碼文件得譯碼,今后會加以改進(丿J)3、在逆向求編碼得入才找到原因所在附源程序:?#inc1udevstdfor循環(huán)里犯了一個邏輯錯誤導(dǎo)致求出來得3、4位編碼串行,嘗試了多鐘數(shù)據(jù)輸,并加以改正,編寫程序需一步一步得去調(diào)試并找到錯誤所在。#includei b、h#include、htype chardefstructdata;II結(jié)點子符weight; II結(jié)點權(quán)值i 1 d;/1父子結(jié)點intint parent,lchild,rch HTNode ,*ty

4、pedefvoid SelecHuffman Tree;char *HuffmanCode;t(HuffmanTree HT, int m,int& s1, int&s2)nt i;s1 = s2= 1;or(i=1;i=m;i+)(HTi、P aren t=0)s1=i; break;s2=i;Huffman Codin g(Huffma nTree &HT,Huffman Code &HC,int* w,i nt n)/w存放n個字符得權(quán)值,構(gòu)造赫夫曼樹HT,并求出n個字符得赫夫曼樹編碼HC、weight(衣p)、parent=0;(衣p)、lchild=0

5、;(*p)、rchild=0;for( ;i=m;+i,+p)i!=s1)for(i=i+1;HTi、weight)fo(1=1; i=m;i+)if(s2HTi、parent=0&i!=s1)=i;break;for(i=i+1;=m;i+)if(HTi、parent=0&HTi、weightHTs2、weight&VOidint fint m,i,int c;HuffmanTree p;char*cd;if (n=1)m=2*n-1;HT=(HuffmanTfos1,s2;retur(p=HT+1,r ee)i=1;mal loc(m+1)*sizeof(HT No

6、de); i=n;+i,+p,+w)(*p)(*p)、parent=0;for(i=1,s2、SeIect(HHTs1、n+1;i=m;+i) /建立赫夫曼樹/在HT1、i1選擇Parent為0且weight最小得兩個節(jié)點,其序號分別為sT,i-1,s1,s2);parent=i;HTs2、parent=i;s1;HTi、rchiId=s2;wei ght;HTi、lchild=HTi、weight=HTs1、weight+HTs2、/*從葉子到根逆向求每個字符得赫夫曼編碼n+1)*sizeof(izeof(char);*HC=(HuffmanCode)nralloc(cd=(char*)ma

7、lloc(n*s0;for(i=1;i=n;+i) int start;start=n-1;for(c=i,f=HTi、pareif(HTf、lchi1d=c) cd-start0 ;elsecd-start=1,HCi=(char *)malloc(n strcpy(HCi,&cdstarfree(cd);voidmain()(Char*);/分配n個字符編碼得頭指針向量/分配求編碼得工作區(qū)間編碼結(jié)束符/逐個字符求赫夫曼樹編碼nt;stat);f!=0;c=f.f=HT:f/編碼結(jié)束符位置pare nt)/從葉子到根逆向求編碼t)*s/i zeof(c釋放空間har); / ,為第i個字符編碼分配空間 從cd復(fù)制編碼(串)到HCHuffmanTreeHT;HuffmanCodeHC;int *w,n,i;printf(請輸入權(quán)值得個數(shù)scanf (%d,&n);w=(i nt *)ma1loc( n*size():);of(int);printf(請

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論