后续遍历非递归算法,报错的有些莫名其妙,求各位复制下我的代码运行一下,看看到底怎么回事

#include
#include
#define max 50
typedef struct
{
char data[max];
int top;
}stack;
void initstack(stack &s)
{
s.top=-1;
}

int isempty(stack s)
{
if(s.top==-1)
return 1;
else
return 0;
}
int push(stack s,char p)
{
if(s.top==max-1)
return 0;
s.data[++s.top]=p;
return 1;
}
int pop(stack s,char &p)
{
if(s.top==-1)
return 0;
p=s.data[s.top--];
return 1;
}

int gettop(stack s,char &p)
{
if(s.top==-1)
return 0;
p=s.data[s.top];
return 1;
}

void visit(bitree T)
{
printf("%c\n",T->data);
}

typedef struct bitnode
{
char data;
struct bitnode *child,*rchild;
}bitnote,*bitree;

void creatbitree(bitree T)
{
char ch;
ch=getchar();
if(ch=='#')
T=NULL;
else
{
T=(bitree)malloc(sizeof(bitnode));
T->data=ch;
T->lchild=NULL;
T->rchild=NULL;
printf("\n建立左子树\n");
creatbitree(T->lchild);
printf("\n建立右子树\n");
creatbitree(T->rchild);
}
}

void postorder(bitree T)
{
stack s;
initstack(s);
bitree p=T;
bitree r=NULL;
while(p||!isempty(s))
{
if(p)
{
push(s,p);
p=p->lchild;
}
else
gettop(s,p);
if(p->rchild&&p->rchild!=r)
{
p=p->rchild;
}
else
{
pop(s,p);
visit(p);
r=p;
p=NULL;
}
}
}
int main()
{
bitree T;
creatbitree(T);
poster(T);
}

啊,你用的是什么语言呐?或者是说在什么环境下运行