充分利用顺序栈单向延伸的特性 使用一个数组来存储两个栈 一个栈底为数组头 一个栈底为数组尾 两栈向中间延伸
#include <iostream>
using namespace std;
const int MaxSize = 100;
template <class DataType>
class Bothack
{
public:
Bothack(){top1 = -1;top2 = MaxSize;}//对于两栈共享的无参构造函数 将两个栈的栈顶指针分别置于 数组头的前一个位置 和 数组尾的后一个位置 这也决定了数组的更改方向
~Bothack(){};
void push(int i,DataType x);//i用来表明是操作栈1还是栈2 将x入栈
DataType pop(int i);//于栈i中弹出栈顶元素 注意判空 判空操作不同于 判满 判空操作对于栈1和栈2需要分别判断
DataType getTop(int i);//根据i来标明获取哪个栈的栈顶元素值
int empty(){(top1 == -1&&top2 == MaxSize)?return 1:return 0;}//当数组为空时 两栈都空
private:
DataType data[MaxSize];