改正一道简单程序题

来源:百度知道 编辑:UC知道 时间:2024/06/24 06:02:58
#include<stdio.h>
#include<string.h>
#define N 50
#define M 2*N-1
typedef struct
{
char data;
int weight;
int parent;
int lchild;
int rchild;
}HTNode;
typedef struct
{
char cd[N];
int start;
}HCode;
void CreateHT(HTNode ht[],int n)
{
int i,k,lnode,rnode;
int min1,min2;
for(i=0;i<2*n-1;i++)
ht[i].parent=ht[i].lchild=ht[i].rchild=-1;
for(i=n;i<2*n-1;i++)
{
min1=min2=32767;
lnode=rnode=-1;
for(k=0;k<=i-1;k++)
{
if(ht[k].parent==-1)
{
if(ht[k].weight<min1)
{
min2=min1;rnode=lnode;
min1=ht[k].weight;
lnode=k;
}
else if(ht[k].weight<min2)
{
min2=ht[k].weight;
rnode=k;
}
}
}
ht[lnode].parent=i;ht[rnode].parent=i;
ht[i].weight=ht[ln

/*调试通过,自己再试试吧*/
#include<stdio.h>
#include<string.h>
#define N 50
#define M 2*N-1
typedef struct
{
char data ;
int weight ;
int parent ;
int lchild ;
int rchild ;
}HTNode ;
typedef struct
{
char cd[N];
int start ;
}HCode ;
void CreateHT(HTNode ht[],int n)
{
int i,k,lnode,rnode ;
int min1,min2 ;
for(i=0;i<2*n-1;i++)
ht[i].parent=ht[i].lchild=ht[i].rchild=-1 ;
for(i=n;i<2*n-1;i++)
{
min1=min2=32767 ;
lnode=rnode=-1 ;
for(k=0;k<=i-1;k++)
{
if(ht[k].parent==-1)
{
if(ht[k].weight<min1)
{
min2=min1 ;
rnode=lnode ;
min1=ht[k].weight ;
lnode=k ;