利比里亚维和王雳:请教高手

来源:百度文库 编辑:神马品牌网 时间:2024/04/27 19:50:57
我写的这个哈夫曼树的程序,没有错误,但运行时会有系统错误,请问高手这是哪里错了,谢谢!

#include "stdafx.h"

#include<iostream.h>

#include<stdio.h>

#define maxsize 100

typedef struct {

int parent,lchild,rchild;

int weight;

int cd[maxsize];

int tag;

int start;

}node;

void main()

{

int i,j,p,n,s1,s2,c,f;

node ht[100];

printf("请输入结点的个数:");

scanf("%d",&n);

for(i=1;i<=n;i++)

{

printf("请输入第%d个结点的权值:",i);

scanf("%d",&ht[i].weight);

ht[i].parent=ht[i].lchild=ht[i].rchild=ht[i].tag=0;

}

for(p=n+1;p=2*n-1;p++)

{

s1=1000;

s2=1000;

for(i=1;i<=p-1;i++)

if(ht[i].tag==0&&s1>ht[i].weight)

{

s1=i;

ht[s1].tag=1;

ht[i].parent=p;

}

for(i=1;i<=p-1;i++)

{

if(ht[i].tag==0&&s2>ht[i].weight)

{

s2=i;

ht[s2].tag=1;

ht[i].parent=p;

}

ht[p].lchild=s1;

ht[p].rchild=s2;

ht[p].tag=0;

ht[p].weight=ht[s1].weight+ht[s2].weight;

}

}

for(i=1;i<=n;i++) {

ht[i].start=n;

for(c=i,f=ht[i].parent;f!=0;c=f,f=ht[f].parent)

if(ht[f].lchild==c) ht[i].cd[ht[i].start--]=0;

else ht[i].cd[ht[i].start--]=1;

}

for(i=1;i<=n;i++)

for(j=n-ht[i].start;j<=n;j++)

printf("%d",ht[i].cd[j]);

}
运行时可以输几个结点的权值,可是输完后按回车,没有输出结果,但是却出现了提示说程序出现了错误,需要关闭,请问各位高手这是怎么回事啊?

在我这里运行一点也没有错的啊

没关工作区吧