注册 登录
编程论坛 C++教室

关于哈夫曼树的问题!

发布于 2010-05-27 09:22, 421 次点击
#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<<" ";
        }
}
请高手帮我看看这个程序,执行的时候出错了,我找不出来原因啊,谢谢了!
2 回复
#2
最近不在2010-05-27 17:07
程序代码:
void select(elem hufftree[],int &i1,int &i2)
{
    int i,s1,s2;   
    s1=minelem(hufftree,i);   //i未初始化
    s2=minelem(hufftree,i);
}
#3
gaoce2272010-05-27 19:13
哎,郁闷啊。我现在连哈夫曼树怎么回事都忘了。楼主给注释一下好不?

[ 本帖最后由 gaoce227 于 2010-5-27 19:20 编辑 ]
1