/* * myDeque.cpp * * Created on: 2010-8-21 * Author: qibaoyuan */ #include <cstdlib> #include "myStack.h" template<typename _Tp> class MyDeque { public: MyDeque() { } virtual ~MyDeque() { } void push_back(const _Tp& value); const _Tp pop(); private: MyStack<_Tp> stackPush; MyStack<_Tp> stackPop; }; template<typename _Tp> void MyDeque<_Tp>::push_back(const _Tp& value) { stackPush.push(value); } template<typename _Tp> const _Tp MyDeque<_Tp>::pop() { if (!stackPop.empty()) {//pop栈不空,则直接弹出站定元素 _Tp value = stackPop.top(); stackPop.pop(); return value; } else {//栈空 if (!stackPush.empty()) {//栈push不空,则将其所有元素放到pop栈中 while (!stackPush.empty()) { stackPop.push(stackPush.top()); stackPush.pop();//弹栈 } _Tp value = stackPop.top(); stackPop.pop(); return value; } else { exit(0); } } }