⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch5_8.c

📁 清华出版社出版
💻 C
字号:
#include <stdio.h>
#define M 10
#define MAX 100
typedef  struct
{  int data;
   int pa,lc,rc;
}JD;

void huffman(int n,int w[],JD t[])
{  int i,j,k,x1,x2,m1,m2;
   for(i=1;i<(2*n);i++)
   {  t[i].pa=t[i].lc=t[i].rc=0;
      if(i<=n)
	 t[i].data=w[i-1];
      else
	 t[i].data=0;
   }
   for(i=1;i<n;i++)
   {  m1=m2=MAX;
      x1=x2=0;
      for(j=1;j<(n+i);j++)
      {  if((t[j].data<m1)&&(t[j].pa==0))
	 {  m2=m1;  x2=x1;
	    m1=t[j].data;  x1=j;
	 }
	 else if((t[j].data<m2)&&(t[j].pa==0))
	 {  m2=t[j].data; x2=j; }
      }
      k=n+i;
      t[x1].pa=t[x2].pa=k;
      t[k].data=m1+m2;
      t[k].lc=x1;
      t[k].rc=x2;
   }
}

void main()
{  int i,j,n=4;
   static int w[]={7,5,2,4};
   JD t[M];
   huffman(n,w,t);
   for(i=1;i<=2*n-1;i++)
      printf("%d ,%d ,%d ,%d \n",t[i].lc,t[i].data,t[i].rc,t[i].pa);
   printf("\n\n");
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -