- 先进先出,只能在队尾插入,队首删除
- 应用领域:两个队列实现栈、树的BFS(宽度优先遍历);
1 用两个队列实现一个栈
题目:用两个队列实现一个栈。栈的声明如下:请实现它的两个函数push和pop,分别完成在入栈和出栈的功能;
1 template <typename T> class CStack 2 { 3 public: 4 CStack(void); 5 ~CStack(void); 6 7 void push(const T& node); 8 T pop(); 9 10 private: 11 queue<T> queue1; 12 queue<T> queue2; 13 }
解题思路:
一个非空队列和一个空队列;
(1)入栈时,选择一个非空队列queue入队;
(2)出栈时,把非空队列的size-1个元素一次出队并入队到另一个空队列中,再将之前的非空队列出队;
(3)出栈时,若queue1和queue2都为空,则返回错误;
未完待续~