数据结构关于二叉树的程序如下,有几个问题搞不清楚,求高手相助,急
#include<stdio.h>#include<stdlib.h>#defineOK1typedefintStatus;typedefcharDataType;typ...
#include<stdio.h>
#include<stdlib.h>
#define OK 1
typedef int Status;
typedef char DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree &bt)
{
char ch;
printf("ch=");
scanf("%c",&ch);
getchar();
if(ch=='@') bt=NULL;
else
{
bt=(BiTNode *)malloc(sizeof(BiTNode));
bt->data=ch;//生成根节点
CreateBiTree(bt->lchild);//构造左子树
CreateBiTree(bt->rchild);//构造右子树
}
return OK;
}
Status Inorder(BiTree bt)
{//二叉树非递归中序遍历算法
int num;
BiTNode *stack[num];
int top=0;
stack[top]=bt;
do
{
while(NULL!=stack[top])
{ //扫描根节点及其所有的左结点并入栈
top=top+1;
stack[top]=stack[top-1]->lchild;
}
top=top-1;//退栈
if(top>=0) //判断栈是否为空
{
printf("%c",stack[top]->data); //访问结点
stack[top]=stack[top]->rchild; //扫描右子树
}
}while(top>=0);
return OK;
}
void main()
{
BiTree bt;
int xz=1;
while(xz)
{
printf("建立二叉树并求指定结点路径 \n");
printf("===============================\n");
printf("1.建立二叉树的存储结构 \n");
printf("2.建立二叉树的中序遍历 \n");
printf("===============================\n");
printf("请选择: (0-2) \n");
scanf("%d",&xz);
getchar();
switch(xz)
{//输入:ABC@@DE@G@@F@@@ 输出:CBEGDFA
case 1:printf("输入二叉树的先序序列结点值:\n");
CreateBiTree(bt);
printf("二叉树的链式存储结构建立完成! \n");
break;
case 2:printf("该二叉树的中序遍历序列是: \n");
Inorder(bt);
printf("\n");
break;
}
}
}
出错如下:
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2057: expected constant expression
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2466: cannot allocate an array of constant size 0
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2133: 'stack' : unknown size
Error executing cl.exe.
03.obj - 3 error(s), 0 warning(s) 展开
#include<stdlib.h>
#define OK 1
typedef int Status;
typedef char DataType;
typedef struct node{
DataType data;
struct node *lchild,*rchild;
}BiTNode,*BiTree;
Status CreateBiTree(BiTree &bt)
{
char ch;
printf("ch=");
scanf("%c",&ch);
getchar();
if(ch=='@') bt=NULL;
else
{
bt=(BiTNode *)malloc(sizeof(BiTNode));
bt->data=ch;//生成根节点
CreateBiTree(bt->lchild);//构造左子树
CreateBiTree(bt->rchild);//构造右子树
}
return OK;
}
Status Inorder(BiTree bt)
{//二叉树非递归中序遍历算法
int num;
BiTNode *stack[num];
int top=0;
stack[top]=bt;
do
{
while(NULL!=stack[top])
{ //扫描根节点及其所有的左结点并入栈
top=top+1;
stack[top]=stack[top-1]->lchild;
}
top=top-1;//退栈
if(top>=0) //判断栈是否为空
{
printf("%c",stack[top]->data); //访问结点
stack[top]=stack[top]->rchild; //扫描右子树
}
}while(top>=0);
return OK;
}
void main()
{
BiTree bt;
int xz=1;
while(xz)
{
printf("建立二叉树并求指定结点路径 \n");
printf("===============================\n");
printf("1.建立二叉树的存储结构 \n");
printf("2.建立二叉树的中序遍历 \n");
printf("===============================\n");
printf("请选择: (0-2) \n");
scanf("%d",&xz);
getchar();
switch(xz)
{//输入:ABC@@DE@G@@F@@@ 输出:CBEGDFA
case 1:printf("输入二叉树的先序序列结点值:\n");
CreateBiTree(bt);
printf("二叉树的链式存储结构建立完成! \n");
break;
case 2:printf("该二叉树的中序遍历序列是: \n");
Inorder(bt);
printf("\n");
break;
}
}
}
出错如下:
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2057: expected constant expression
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2466: cannot allocate an array of constant size 0
C:\Program Files\Microsoft Visual Studio\MyProjects\hsy\03.cpp(32) : error C2133: 'stack' : unknown size
Error executing cl.exe.
03.obj - 3 error(s), 0 warning(s) 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询