哈夫曼樹的編碼與譯碼_第1頁
哈夫曼樹的編碼與譯碼_第2頁
哈夫曼樹的編碼與譯碼_第3頁
哈夫曼樹的編碼與譯碼_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、#include<stdio.h>#include<stdlib.h>#define n 4#define m 2*n-1#define maxval 32769typedef structfloat weight;int lchild,rchild,parent; char ch;huftree;typedef structchar bitsn;int start;codetype;codetype coden;huftree treem;void hufman(huftree tree)/創建哈夫曼樹 int i,j,p1,p2; char ch; float sm

2、all1,small2,f; for(i=0;i<m;i+)/初始化所有結點 treei.parent=0; treei.lchild=0; treei.rchild=0; treei.weight=0.0; printf("請輸入結點的權值:n"); for(i=0;i<n;i+)/輸入n個結點的權值 scanf("%f",&f);treei.weight=f; printf("請輸入結點的字符:n");scanf("%c",&ch); for(i=0;i<n;i+)/輸入n個結

3、點的權值 scanf("%c",&ch);treei.ch=ch; for(i=n;i<m;i+)/進行n-1次合并,產生n-1個新結點 p1=0,p2=0;small1=maxval;small2=maxval;for(j=0;j<=i-1;j+)/找出權值最小的兩個根結點if(treej.parent=0)if(treej.weight<small1)/改變最小權與次小權的位置small2=small1;small1=treej.weight;p2=p1;p1=j;/鎖定最小權的位置 elseif(treej.weight<small2)

4、small2=treej.weight;p2=j;/鎖定次小權的位置treep1.parent=i+1;/生成的新結點為最小權與次小權的雙親treep2.parent=i+1;treei.lchild=p1+1;treei.rchild=p2+1;treei.weight=treep1.weight+treep2.weight; void creathufcode(codetype code)/由哈夫曼數構建哈夫曼編碼 int i,c,p; codetype cd; for(i=0;i<n;i+) cd.start=n; c=i+1; p=treei.parent; while(p!=0

5、) cd.start-; if(treep-1.lchild=c) cd.bitscd.start='0' else cd.bitscd.start='1' c=p; p=treep-1.parent; codei=cd; void decode(codetype code,huftree tree)/依次讀入電文,根據哈夫曼樹譯碼 int i,b; int flag=-1; i=m-1; printf("請輸入電文編碼:"); scanf("%d",&b); while(b!=flag) if(b=0) i=treei.lchild-1; else i=treei.rchild-1; if(treei.lchild=0)/找到葉節點,輸出對應字符 printf("譯碼后對應的字符:%cn",treei.ch); printf("譯碼后字符對應的權值:%f",treei.weight); i=m-1; scanf("%d",&b); if(treei.lchild!=0) print

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論