C语言,二叉树非递归(链栈)的遍历,找错

来源:百度知道 编辑:UC知道 时间:2024/06/15 10:00:11
搞了N久还是没搞定,只好求助各位高手,调试一下,哪里出错了
#include<stdio.h>
#include<stdlib.h>

#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10

typedef struct BiTNode
{
char data;
struct BiTNode *Lchild,*Rchild;
}BiTNode,*BiTNodePtr;

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

SqStack InitStack(SqStack S)
{
S.base=(BiTNode*)malloc(STACK_INIT_SIZE*sizeof(BiTNode));

if(!S.base) exit(0);
S.top=S.base;
S.stacksize=STACK_INIT_SIZE;
return S;
}

int GetTop(SqStack S,BiTNode **p)
{
if(S.top==S.base) return 0;

*p=S.top-1;
return 1;
}

void Push(SqStack *S,BiTNodePtr T)
{
if((S->top-S->base)>=S->stacksize)
{
S->base=(BiTNode *)realloc(S->base,(S->stacksize+STACKINCREMENT)*siz

InitStack的定义有问题,应该是
SqStack InitStack(SqStack &S)
你原来的程序中是值传递,因此代码段中的S实际上是栈的一个临时副本,没有影响到本体.

我没怎么仔细看 但是我在我的环境上运行了下 没语法错误 不知道你想调试的是什么