![]() |
#2
最近不在2010-05-27 17:07
|
#include <iostream>
using namespace std;
struct elem
{
int weight;
int parent,lchild,rchild;
};
int minelem(elem hufftree[],int i)
{
int j,m;
int k=999999;
for(j=0;j<i;j++)
if(hufftree[j].weight<k && hufftree[j].parent==-1)
{
k=hufftree[j].weight;
m=j;
}
hufftree[m].parent=1;
return m;
}
void select(elem hufftree[],int &i1,int &i2)
{
int i,s1,s2;
s1=minelem(hufftree,i);
s2=minelem(hufftree,i);
}
void huffmantree(elem hufftree[],int w[],int n)
{
for(int i=0;i<2*n-1;i++)
{
hufftree[i].parent=-1;
hufftree[i].lchild=-1;
hufftree[i].rchild=-1;
}
for(i=0;i<n;i++)
hufftree[i].weight=w[i];
for(int k=n;k<2*n-1;k++)
{
int i1,i2;
select(hufftree,i1,i2);
hufftree[i1].parent=k;
hufftree[i2].parent=k;
hufftree[k].weight=hufftree[i1].weight+hufftree[i2].weight;
hufftree[k].lchild=i1;
hufftree[k].rchild=i2;
}
}
void main()
{
int w[100],n;
elem hufftree[100];
cin>>n;
for(int i=0;i<n;i++)
cin>>w[i];
huffmantree(hufftree,w,n);
for(i=0;i<2*n-1;i++)
{
cout<<hufftree[i].weight<<" ";
cout<<hufftree[i].parent<<" ";
}
}
请高手帮我看看这个程序,执行的时候出错了,我找不出来原因啊,谢谢了!