帮忙看看哈弗曼树
#include<stdio.h>typedef struct{ //定义结构体用以存储哈弗曼数的结点;
int weight;
int parent;
int lchild;
int rchild;
}huffman;
int select(huffman s[],int t,int minx,int miny); //声明函数;
void main() //主函数开始;
{
int n,m,i,s1,s2; //定义变量;
huffman ht[100];
printf("please enter the leaf numbers:");
scanf("%d",&n); //输入叶子结点数;
m=2*n-1; //计算总的结点数;
for(i=0;i<n;i++) //输入个叶子结点的权重;
{
scanf("%d",&ht[i].weight);
}
for(i=0;i<m;i++) //将哈弗曼树的所有结点的父亲和孩子均置零;
{
ht[i].parent=0;
ht[i].lchild=0;
ht[i].rchild=0;
}
for(i=0;i<m;i++) //输出初始化后的各结点;
{
printf("%d--weight %d--parent %d--lchild %d--rchild %d\n",i,ht[i].weight,ht[i].parent,ht[i].lchild,ht[i].rchild);
}
for(i=n+i;i<=m;i++)
{
select(ht,i-1,s1,s2); //选出结点中最小的两个数;
ht[i].weight=ht[s1].weight+ht[s2].weight; //得出它们的双亲结点;
ht[s1].parent=i;ht[s2].parent=i;
}
for(i=0;i<m;i++) //输出哈弗曼树;
printf("%d--weight %d--parent %d--lchild %d--rchild %d\n",i,ht[i].weight,ht[i].parent,ht[i].lchild,ht[i].rchild);
}
int select(huffman a[],int t,int minx,int miny)
{
minx=100;
miny=100;
int r,j;
for(r=0;r<t;r++)
{
if((a[r].parent==0)&&(a[r].weight<minx))
{
minx=r;
}
}
for(j=0;j<t,j!=r;j++)
{
if((a[j].parent==0)&&(a[j].weight<miny))
{
miny=j;
}
}
return minx;
return miny;
}
程序编译都没有错误,可是运行怎么不行啊?请各位大侠帮忙看看