,p->rchild); continue; } else { Pop(&S,&p); if(!Visit(p->data)) return ERROR; } }//if }//while DestroyStack(&S); return OK; } Status Visit(ElemType e) { // 对二叉树中的数据元素访问 if(e=='\0') { return ERROR; } else { printf("%c",e); } return OK; } //----------- 顺序栈操作--------------// Status InitStack(SqStack *S) { // 构造一个空栈 S S->base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S->base)// 分配失败{ printf(" 分配内存失败.\n"); exit(0); } S->top=S->base; S->stacksize=STACK_INIT_SIZE; return OK; } Status DestroyStack(SqStack *S) { // 销毁栈 S,S 不再存在 if(!S)//S 为空{ printf(" 指针为空,释放失败.\n"); exit(0); } free(S->base); return OK; } Status ClearStack(SqStack *S) { // 把栈 S 置为空栈 if(!S)//S 不存在 return FALSE; S->top=S->base;// 直接将栈顶指针指向栈底 return OK; } Status StackEmpty(SqStack S) { // 若栈 S 为空栈,则返回 TRUE ,否则返回 FALSE