#include<stdio.h>
#include<stdlib.h>
typedef struct tree
{
char a;
struct tree *l;
struct tree *r;
}tree,*btree;
int i;
int e;
int y;
btree make(btree T,char j[],int c[],int b)
{
btree n[b];
for(i=0;i<b;i++)
{
n[i]=(btree)malloc(sizeof(tree));
n[i]->a=j[i];
n[i]->l=n[i]->r=NULL;
}
e=1;
for(i=0;i<b;i++)
{
if(c[i]!=0)
{
n[i]->l=n[e];
for(y=1;y<=c[i]-1;y++)
{
e++;
n[e-1]->r=n[e];
}
e++;
}
}
T=n[0];
return T;
}
void nice(btree T)
{
if(T!=NULL)
{
nice(T->l);
printf("%c ",T->a);
nice(T->r);
}
}
int main()
{
int b;
scanf("%d",&b);
int c[b];
char j[100];
for(i=0;i<b;i++)
{
scanf("%c",&j[i]);getchar();
}
for(i=0;i<b;i++)
{
scanf("%d",&c[i]);
}
btree T;
T=make(T,j,c,b);
nice(T);
return 0;
}
主函数里的b如果自行输入就输出不了结果,如果一开始就给它赋值就能出结果,请问是为什么呢
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
书山客 2021-12-15 09:28关注定义可变数组在C++中可以定义vector类型的数据,C语言可以自己手动写一个类似的方法
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录