万能铣床x6232支架:请高手帮我看看这个程序的问题!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 14:57:08
这是个哈夫曼树的程序,可以运行,但总是有错,请高手帮我看看!
#include "stdafx.h"
#include<iostream.h>
#include<stdlib.h>
#define MAXSIZE 100
typedef struct {
int weight;
int parent,lchild,rchild;
}HTNode;
typedef struct {
char cd[MAXSIZE];
int start;
}HTCode;
void main() {
int i,j,m,n,s1,s2,start,c,f,k;
HTNode HT[200];
HTCode HC[100];
cout<<"请输入结点个数:";
cin>>n;
m=2*n-1;
for(i=1;i<=n;i++) {
cout<<"请输入第"<<i+1<<"个结点的权值:";
cin>>HT[i].weight;
}
for(i=1;i<=n;++i)
{

HT[i].parent=HT[i].lchild=HT[i].rchild=0;
}
for(;i<=m;i++)
{
HT[i].weight=0;
HT[i].parent=HT[i].lchild=HT[i].rchild=0;
}
for(i=n+1;i<=m;i++)
{
s1=255;
s2=255;
for(k=1;i<=n;i++)
if(s1>HT[k].weight&&HT[k].parent==0) s1=i;
for(k=1;i<=n;i++)
if(s1>HT[k].weight&&HT[k].parent==0&&k!=s1) s2=i;
HT[s1].parent=k;
HT[s2].parent=k;
HT[k].lchild=s1;
HT[k].rchild=s2;
HT[k].weight=HT[s1].weight+HT[s2].weight;
}

for(i=1;i<=n;++i) {
start=n-1;
for(c=i,f=HT[i].parent;f!=0;c=f,f=HT[f].parent)
{
if(HT[f].lchild==c) HC[i].cd[--HC[i].start]='0';
else HC[i].cd[--HC[i].start]='1';
}

}
for(i=1;i<=n;i++)
for(j=HC[i].start;j<100;j++)
{
cout<<HC[i].cd[j];
cout<<endl;
}

}