【算法题目】用两个栈实现一个队列
相关题目:《剑指offer》面试题7
template<T> class Queue { public: Queue(); ~Queue(); void Push(const T& value) { s1.push(value): } void Pop() { if (s2.empty()) { while (!s1.empty()) { s2.push(s1.top()); s1.pop(); } } s2.pop(); } private: stack<T> s1; stack<T> s2; }
用两个队列实现一个栈:
template<typename T> clsss Stack { public: Stack(); ~Stack(); void Push(const T& value) { q1.push(value); } void Pop() { if (s2.empty()) { while (!s1.empty()) { s2.push(s1.front()); s1.pop(); } } return s2.top(); } T& Top() { return s2.front(); } private: queue<T> q1; queue<T> q2; }