构造树CreateBiTree问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 17:51:21
#include<iostream>
using namespace std;
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef struct BiTNode
{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;

typedef struct
{
BiTree *base;
BiTree *top;
int stacksize;
}SqStack;

int InitStack(SqStack &S)
{
S.base =new BiTree[STACK_INIT_SIZE];
if(!S.base)
exit(0);
S.top =S.base ;
S.stacksize =STACK_INIT_SIZE;
return 1;
}

int GetTop(SqStack S,BiTree &T)
{
if(S.top == S.base)
return 0;
T=*(S.top -1);
return 1;
}

int Push(SqStack S,BiTree &T)
{
if(S.top -S.base >=S.stacksize )
S.base =new BiTree[STACK_INIT_SIZE+STACKINCREMENT];
if(!S.base )
exit(0);
S.top =S.base +S.stacksize ;
S.stacksize+=STACKINCREMENT;
*S.top ++=T;
return 1;<

错误不少

1.Push,pop这些栈操作,对栈结构有修改,必须对S用引用传递
2.StackEmpty的返回值写反了,应该是空的时候返回1
3.push写错了,应该是
int Push(SqStack S,BiTree &T)
{
if(S.top -S.base >=S.stacksize )
{
S.base =new BiTree[STACK_INIT_SIZE+STACKINCREMENT];
if(!S.base )
exit(0);
S.top =S.base +S.stacksize ;
S.stacksize+=STACKINCREMENT;
}
*S.top ++=T;
return 1;
}