我的哈夫曼编码输出是这样的

#include
struct node
{
int weight;
int parent,lch,rch;
};

int n;

creat_huff(struct node Htree[]);
code_huff(struct node Htree[]);

creat_huff(struct node Htree[])
{
int i,j,min1,min2,min11,min22;
printf("请输入叶子的结点个数:");

scanf("%d",&n);
for(i=0;i<2*n-1;i++)
{
Htree[i].parent=-1; //数组Htree的初始化
Htree[i].lch=-1;
Htree[i].rch=-1;
}

for(i=0;i<n;i++)
{
    printf("输入第%d个叶节点的权值:",i);
    scanf("%d",&Htree[i].weight);                   //叶子的权值赋值到Htree数组中
}
for(i=n;i<2*n-1;i++)
{
    min1=min2=10000;
    min11=min22=0;                                    //用min1,min2记录最小的权值;min11.min22记录位置;
    for(j=0;j<i;j++)
    {
        if(Htree[j].parent==-1)
            if(Htree[j].weight<min1)                           //当权值比最小值还要小的时候,最小值赋给次小值,权值赋给最小值。
            {       min2=min1;
            min22=min11;
            min11=j;
            min1=Htree[j].weight;
            }
            else
                if(Htree[j].weight<min2)
                {
                    min22=j;
                    min22=Htree[j].weight;
                }
    }
    Htree[min11].parent=i;                                            //设置最小值和次小值的parent域
    Htree[min22].parent=i;                                        //设置新的parent,lch,rch
    Htree[i].weight=Htree[min11].weight+Htree[min22].weight;
    Htree[i].lch=min11;
    Htree[i].rch=min22;
}
Htree[2*n-2].parent=-1;

}

code_huff(struct node Htree[])
{
int i,j,k,pr,start;
char code[50][50];
for(i=0;i<n;i++)
{
j=n-2;
k=i;

    while (Htree[k].parent!=-1)
    {
        pr=Htree[k].parent;      //记录父结点
        if(k==Htree[pr].lch)
            code[i][j]='0';         //左孩子编码为0,右编码为1
        else
        code[i][j]='1';       //编码存进数组里
        j=j-1;
        k=pr;                   //从叶结点逐渐到根结点
        pr=Htree[k].parent;
        code[i][n-1]=j+1;
    }
    printf("编码为:\n");
    for(i=0;i<n;i++)
    {
        printf("第%d个哈夫曼编码是:",i);
        start=code[i][n-1];
        for(j=start;j<n-1;j++);
        printf("    %d",code[i][j]);
        printf("\n");
}
}

}

main()
{
    int i,j,k,pr,start;
    char code[50][50];
    struct node Htree[20];
    creat_huff(Htree);

    printf("\n weight  parent  lch  rch\n");
    for (i=0;i<2*n-1;i++)
    {printf("    %-6d%-8d%-5d%-5d\n",Htree[i].weight,Htree[i].parent,Htree[i].lch,Htree[i].rch);
    }
    code_huff(Htree);

}

可以考虑和这个哈夫曼编码的实现对照哈。 http://download.csdn.net/detail/sun1021873926/9730076