CH5_8.C
上传用户:lgb298
上传日期:2013-03-22
资源大小:1025k
文件大小:1k
源码类别:

软件工程

开发平台:

C/C++

  1. #include <stdio.h>
  2. #define M 10
  3. #define MAX 100
  4. typedef  struct
  5. {  int data;
  6.    int pa,lc,rc;
  7. }JD;
  8. void huffman(int n,int w[],JD t[])
  9. {  int i,j,k,x1,x2,m1,m2;
  10.    for(i=1;i<(2*n);i++)
  11.    {  t[i].pa=t[i].lc=t[i].rc=0;
  12.       if(i<=n)
  13.  t[i].data=w[i-1];
  14.       else
  15.  t[i].data=0;
  16.    }
  17.    for(i=1;i<n;i++)
  18.    {  m1=m2=MAX;
  19.       x1=x2=0;
  20.       for(j=1;j<(n+i);j++)
  21.       {  if((t[j].data<m1)&&(t[j].pa==0))
  22.  {  m2=m1;  x2=x1;
  23.     m1=t[j].data;  x1=j;
  24.  }
  25.  else if((t[j].data<m2)&&(t[j].pa==0))
  26.  {  m2=t[j].data; x2=j; }
  27.       }
  28.       k=n+i;
  29.       t[x1].pa=t[x2].pa=k;
  30.       t[k].data=m1+m2;
  31.       t[k].lc=x1;
  32.       t[k].rc=x2;
  33.    }
  34. }
  35. void main()
  36. {  int i,j,n=4;
  37.    static int w[]={7,5,2,4};
  38.    JD t[M];
  39.    huffman(n,w,t);
  40.    for(i=1;i<=2*n-1;i++)
  41.       printf("%d ,%d ,%d ,%d n",t[i].lc,t[i].data,t[i].rc,t[i].pa);
  42.    printf("nn");
  43. }