题目:建立一个二叉树,按层遍历二叉树。真心请教各位下面原码中BiTNode *qu[Maxsize]处报错,该如何修改?
# include <stdio.h>
# include <stdlib.h>
typedef int Etype;
typedef struct BiTNode /* 树结点结构 */
{ Etype data;
struct BiTNode *lch,*rch;
}BiTNode;
/* 函数原形声明 */
BiTNode *creat_bt1();
BiTNode *creat_bt2();
void LevelOrder(BiTNode *bt);
BiTNode *t; int n,n0,n1,n2;
/* 主函数 */
void main()
{ char ch; int k;
do { printf("\n\n\n");
printf("\n\n 1. 建立二叉树方法1 ");
printf("\n\n 2. 建立二叉树方法2");
printf("\n\n 3. 层次遍历二叉树");
printf("\n\n 4. 结束程序运行");
printf("\n======================================");
printf("\n 请输入您的选择 (1,2,3,4,5)"); scanf("%d",&k);
switch(k)
{ case 1:t=creat_bt1( );break; /* 调用性质5建立二叉树算法 */
case 2:t=creat_bt2( );break; /* 调用递归建立二叉树算法 */
case 3: { LevelOrder(t); /* 调用层次遍历 */
printf("\n\n 打回车键,继续。"); ch=getchar();
} break;
case 4: exit(0);
} /* switch */
printf("\n ----------------");
}while(k>=1 && k<5);
printf("\n 再见!");
printf("\n 打回车键,返回。");
ch=getchar();
} /* main */
/* 利用二叉树性质5 ,借助一维数组V 建立二叉树 */
BiTNode *creat_bt1()
{ BiTNode *t,*p,*v[20]; int i,j; Etype e;
/* 输入结点的序号i 、结点的数据e */
printf("\n i,data=?"); scanf("%d,%d",&i,&e);
while(i!=0 && e!=0) /* 当 i ,e都为0时,结束循环 */
{ p=(BiTNode *)malloc(sizeof(BiTNode));
p->data=e; p->lch=NULL; p->rch=NULL;
v[i]=p;
if (i==1) t=p; /* 序号为1的结点是根 */
else{ j=i/2;
if(i%2==0) v[j]->lch=p; /* 序号为偶数,做左孩子*/
else v[j]->rch=p; /* 序号为奇数,做右孩子*/
}
printf("\n i,data=?"); scanf("%d,%d",&i,&e);
}
return(t);
} /* creat_bt1 */
/* 模仿先序递归遍历方法,建立二叉树 */
BiTNode *creat_bt2()
{ BiTNode *t;
Etype e;
printf("\n data="); scanf("%d",&e);
if(e==0) t=NULL; /* 对于0值,不分配新结点 */
else { t=(BiTNode *)malloc(sizeof(BiTNode));
t->data=e;
t->lch=creat_bt2(); /* 左孩子获得新指针值 */
t->rch=creat_bt2(); /* 右孩子获得新指针值 */
}
return(t);
} /* creat_bt2 */
void LevelOrder(BiTNode *bt)
{ BiTNode *p;
BiTNode *qu[Maxsize];
int front,rear;
front=rear=0;
rear++;qu[rear]=bt;
while (front!=rear)
{ front=(front+1)%Maxsize;
p=qu[front];
printf("%c",p->data);
if(p->lch!=NULL)
{ rear=(rear+1)%Maxsize;
qu[rear]=p->lch;
}
if(p->rch!=NULL)
{ rear=(rear+1)%Maxsize;
qu[rear]=p->rch;
}
}
}
下面是报错的内容
error C2065: 'Maxsize' : undeclared identifier
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'qu' : unknown size
第一次提问,若有描述不清楚请多多包涵,谢谢各位!