void PostOrder(BiTree T)//后序遍历非递归算法 { SqStack S; InitStack(S); ////建立栈 BiTree P; P=T; BiTree lastvist = NULL; while (NULL!=T||!StackEmpty(S)) { while (P!=NULL) { Push(S,P); //压栈 P= P->lchild; } GetTop(S,P); //返回栈顶元素 if (NULL==P->rchild||lastvist==P->rchild) { printf("%c",P->data); Pop(S,lastvist); //弹出栈 P = P->rchild; } } } 这是C语言数据结构的算法 大家看下我这个哪里错了 编译的时候没错 但就是运行到这个程序的时候就不能运行后面的算法 程序就中断了 后面这是我的主程序 运行只能显示到后序非递归 ··· void main() //主函数 { printf("请输入先序建立二叉树所需要的数据,空树以0输入:"); BiTree t; CreateBiTree(t); printf("前序非递归算法输出为:"); Preorder(t); printf("\ "); printf("中序非递归算法输出为:"); InOrderTraverse(t); printf("\ "); printf("后序非递归算法输出为:"); PostOrder(t); printf("\ "); printf("前序递归算法输出为:"); PreOrderT(t); printf("\ "); printf("中序递归算法输出为:"); InOrderT(t); printf("\ "); printf("后序递归算法输出为:"); PostOrderT(t); printf("\ ");