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

📄 haifumanshu.zip.txt

📁 任务 :建立最优二叉树函数 要求:可以建立函数输入二叉树
💻 TXT
字号:
//哈夫曼编\译码器
# define max 50 
> struct a 
> { 
> int weight; 
> int parent,lchild,rchild; 
> }; 
> struct b 
> { 
> char cd[max]; 
> int start; 
> }; 
> main() 
> { 
> struct a ht[2*max]; 
> struct b hcd[max],d; 
> int i,j,k,n,c,s1,s2,m1,m2,f; 
> printf("shu ru n: 
"); 
> scanf("%d",&n); 
> for(i=1;i<=n;i++) 
> { 
> printf("shu ru quan zhi :"); 
> scanf("%d",&ht[i].weight); 
> ht[i].parent=0; 
> } 
> for(;i<=2*n-1;i++) 
> ht[i].parent=ht[i].lchild=ht[i].rchild=0; 
> for(i=n+1;i<=2*n-1;i++) 
> { 
> m1=m2=30000; 
> s1=s2=0; 
> for(k=1;k<=i-1;k++) 
> { 
> if(ht[k].parent==0 && ht[k].weight<m1) 
> { 
> m2=m1; 
> s2=s1; 
> m1=ht[k].weight; 
> s1=k; 
> } 
> else if(ht[k].parent==0 && ht[k].weight<m2) 
> { 
> m2=ht[k].weight; 
> s2=k; 
> } 
> } 
> ht[s1].parent=ht[s2].parent=i; 
> ht[i].lchild=s1; 
> ht[i].rchild=s2; 
> ht[i].weight=ht[s1].weight+ht[s2].weight; 
> } 
> for(i=1;i<=n;i++) 
> { 
> d.start=n-1; 
> c=i; 
> f=ht[i].parent; 
> while(f) 
> { 
> if(ht[f].lchild==c)d.cd[--d.start]='0'; 
> else d.cd[--d.start]='1'; 
> c=f; 
> f=ht[f].parent; 
> } 
> hcd[i]=d; 
> } 
> printf("shu chu ha fu bian ma 
"); 
> for(i=1;i<=n;i++) 
> { 
> printf("%d ",ht[i].weight); 
> for(k=hcd[i].start;k<n-1;k++) 
> printf("%c",hcd[i].cd[k]); 
> printf(" 
"); 
> } 
> } 
> 
>

⌨️ 快捷键说明

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