帮我看一下这个程序,编译时有一个错误,可就是解决不了,谢谢了!
#include"stdio.h"#include"stdlib.h"#include"time.h"#defineN10typedefstructsortb{intx;...
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#define N 10
typedef struct sortb
{ int x; int data;
struct sortb *left,*right;} STBT;
void out(STBT *a)
{ int j=0;
for(;j<N;j++)
printf("%5d",a[j]);
}
void inita(STBT *a)
{ int k;
srand((unsigned)time(NULL));
for(k=0;k<N;k++)
a[k]=rand()%100+1;
}
void insert(STBT *a,STBT *s)
{ if(a==NULL) a=s;
else if(s->x==a->x) return;
else if(s->x<a->x) insert(a->left,s);
else if(s->x>a->x) insert(a->right,s);
}
void inorder( STBT *a) /* 前序遍历 */
{ if(a!= NULL)
{ inorder(a->left); /* 中序遍历左子树 */
printf("%c ", a->data); /* 访问根结点 */
inorder(a->right); /* 中序遍历右子树 */
}
}
void main()
{ STBT *a;
if(a!=NULL)
{ inita(a);
out(a);
printf("InOrder:"); /* 中序遍历 */
inorder(a); printf("\n");
out(a);
}
} 展开
#include "stdlib.h"
#include "time.h"
#define N 10
typedef struct sortb
{ int x; int data;
struct sortb *left,*right;} STBT;
void out(STBT *a)
{ int j=0;
for(;j<N;j++)
printf("%5d",a[j]);
}
void inita(STBT *a)
{ int k;
srand((unsigned)time(NULL));
for(k=0;k<N;k++)
a[k]=rand()%100+1;
}
void insert(STBT *a,STBT *s)
{ if(a==NULL) a=s;
else if(s->x==a->x) return;
else if(s->x<a->x) insert(a->left,s);
else if(s->x>a->x) insert(a->right,s);
}
void inorder( STBT *a) /* 前序遍历 */
{ if(a!= NULL)
{ inorder(a->left); /* 中序遍历左子树 */
printf("%c ", a->data); /* 访问根结点 */
inorder(a->right); /* 中序遍历右子树 */
}
}
void main()
{ STBT *a;
if(a!=NULL)
{ inita(a);
out(a);
printf("InOrder:"); /* 中序遍历 */
inorder(a); printf("\n");
out(a);
}
} 展开
展开全部
问题很多,我觉得关键的是你还没有完全理解struct是什么意思,恕我直白。
拿 void inita(STBT *a)
{ int k;
srand((unsigned)time(NULL));
for(k=0;k<N;k++)
a[k]=rand()%100+1;
}
中的a[k]=rand()%100+1;来说吧,你的本意是要产生一个随机数,放到a[k]中,但是a[k];并不是int类型的,而是你自已定义的STBT型的,它有两个成员,int x;和int data; 你到底要放到哪个中呢?你不说明,电脑这么呆的东要它肯定不知道啦!所以要说明 比如a[k].data=rand()%100+1
程序中还有其他类似的错误,比如printf("%5d",a[j]);
你大概是想把a[j]中的东西都输出来,但是电脑看了后是要流汗许久的。
拿 void inita(STBT *a)
{ int k;
srand((unsigned)time(NULL));
for(k=0;k<N;k++)
a[k]=rand()%100+1;
}
中的a[k]=rand()%100+1;来说吧,你的本意是要产生一个随机数,放到a[k]中,但是a[k];并不是int类型的,而是你自已定义的STBT型的,它有两个成员,int x;和int data; 你到底要放到哪个中呢?你不说明,电脑这么呆的东要它肯定不知道啦!所以要说明 比如a[k].data=rand()%100+1
程序中还有其他类似的错误,比如printf("%5d",a[j]);
你大概是想把a[j]中的东西都输出来,但是电脑看了后是要流汗许久的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询