//栈 template struct SqStack // 顺序栈 { BTNode
* *base; // 栈首址 int top; // 栈顶指针 int stacksize; // 栈容量 }; //【算法3.1】 初始化栈 template void InitStack(SqStack
&S, int m) { S.base=new BTNode
* [m]; // 申请栈空间 if(S.base==NULL) { cout<<"未创建成功!"; exit (1); } S.top=-1; // 空栈 S.stacksize=m; // 栈容量为m } //算法3.2】 销毁栈 template void DestroyStack(SqStack
&S)//析构函数 { delete [] S.base; //释放栈空间 S.top=-1; S.stacksize=0; } //【算法3.3】 template bool Push(SqStack
&S,BTNode
* e) { if(S.top==S.stacksize-1) // 栈满,不能插入 return false; S.top++; S.base[S.top]=e; return true; // 插入成功,返回true } //【算法3.4】 出栈 template bool Pop(SqStack
&S,BTNode
* &e) { if(S.top==-1) //栈空 return false; e=S.base[S.top]; S.top--; return true; // 出栈成功,返回true } template // 获取栈元素 bool GetTop(SqStack
&S,BTNode
* &e) { if(S.top==-1) // 栈空,返回false return false; e=S.base[S.top]; // 取栈元素 return true; // 返回true } // 测栈空 template bool StackEmpty(SqStack
S) { if(S.top==-1) // 栈空,返回true return true; else // 栈非空,返回false return false; }