赫夫曼編譯器的簡單實現(xiàn)

赫夫曼編譯器的簡單實現(xiàn)

ID:1602044

大小:167.00 KB

頁數(shù):12頁

時間:2017-11-12

赫夫曼編譯器的簡單實現(xiàn)_第1頁
赫夫曼編譯器的簡單實現(xiàn)_第2頁
赫夫曼編譯器的簡單實現(xiàn)_第3頁
赫夫曼編譯器的簡單實現(xiàn)_第4頁
赫夫曼編譯器的簡單實現(xiàn)_第5頁
資源描述:

《赫夫曼編譯器的簡單實現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、數(shù)據(jù)結(jié)構(gòu)實驗報告赫夫曼編譯器數(shù)據(jù)結(jié)構(gòu)實驗報告(本實驗項目方案受“教育部人才培養(yǎng)模式創(chuàng)新實驗區(qū)(X3108005)”項目資助)實驗難度:A□B□C★序號學(xué)號姓名成績123指導(dǎo)教師(簽名)學(xué)  期:  2010秋季學(xué)期任課教師:實驗題目:小組長:   聯(lián)系電話:      電子郵件: 完成提交時間:年月日 12數(shù)據(jù)結(jié)構(gòu)實驗報告(下面的內(nèi)容由學(xué)生填寫,格式統(tǒng)一為,字體:楷體,行距:固定行距18,字號:小四,個人報告按下面每一項的百分比打分。難度A滿分70分,難度B滿分90分)一、【實驗構(gòu)思(Conceive)】(10%)(本部分應(yīng)包括:

2、描述實驗實現(xiàn)的基本思路,包括所用到的離散數(shù)學(xué)、工程數(shù)學(xué)、程序設(shè)計、算法等相關(guān)知識)赫夫曼編碼是一種前綴編碼,約定左分支表示字符“0”,右分支表示字符“1”,則可以從根節(jié)點到葉子節(jié)點的路徑上分支字符組成的字符串作為該葉子結(jié)點字符的編碼。求編碼的過程就是從葉子結(jié)點出發(fā)走一條從葉子到根的路徑,而譯碼就是走一條從根出發(fā)到葉子結(jié)點的路徑。二、【實驗設(shè)計(Design)】(20%)(本部分應(yīng)包括:抽象數(shù)據(jù)類型的功能規(guī)格說明、主程序模塊、各子程序模塊的偽碼說明,主程序模塊與各子程序模塊間的調(diào)用關(guān)系)1、選擇森林中根結(jié)點的權(quán)值最小和次小的兩個樹,

3、將其根結(jié)點的下標(biāo)號記入s1和s2voidSelect(HuffmanTree&HT,inti,int&s1,int&s2){intj,k;for(k=1;k

4、arent!=NULL

5、

6、k==s1)continue;s2=k;break;}for(j=1;j

7、start=1;char*cd;if(n<=1)return;12數(shù)據(jù)結(jié)構(gòu)實驗報告m=2*n-1;if(!(HT=(HuffmanTree)malloc((m+1)*sizeof(HTNode))))exit(OVERFLOW);for(p=HT+1,i=1;i<=n;++i,++zi,++p,++w){/*生成獨立的森林*/p->parent=NULL;p->letter=*zi;p->lchild=NULL;p->rchild=NULL;p->weight=*w;}for(;i<=m;++i,++p){(*p).weight=

8、0;(*p).parent=0;(*p).lchild=0;(*p).rchild=0;}for(i=n+1;i<=m;++i){Select(HT,i-1,s1,s2);HT[s1].parent=i;HT[s2].parent=i;HT[i].lchild=s1;HT[i].rchild=s2;HT[i].weight=HT[s1].weight+HT[s2].weight;12數(shù)據(jù)結(jié)構(gòu)實驗報告}HC=(HuffmanCode)malloc((n+1)*sizeof(char*));cd=(char*)malloc(n*siz

9、eof(char));/*臨時的code存儲*/cd[n-1]='