写了个程序,出了问题,还以为结构体不能按引用传递。事实证明,我错了,我错误的原因也找到了,跟结构体的引用没有任何关系。罗嗦一点,把二叉树的非递归后序遍历代码和自己写的链栈GetTop函数贴在下面:
template <class ElemType>
void PostOrderTraverse_I(TreeNode<ElemType>* t,void (*Visit)(ElemType& e))
{
StackNode<ElemType> curnode,topnode;
LinkStack<StackNode<ElemType> > S;
TreeNode<ElemType>* p=t;
do
{
while(p)
{
curnode.ptr=p;
curnode.tag=0;
S.Push(curnode);
p=p->LeftChild();
}
S.GetTop(topnode);
while(!S.StackEmpty()&&topnode.tag==1)
{
S.Pop(curnode);
p=curnode.ptr;
Visit(p->data);
S.GetTop(topnode);
}
if(!S.StackEmpty())
{