225 Implement Stack using Queues(用队列实现栈Medium)

题目意思:用队列实现栈,push(),pop(),top(),empty()

思路:用两个queue,pop时将一个queue的元素pop再push到另一个队列,queue只留最后一个元素,并pop,再将目标队列变为另一个

  ps:用栈实现队列,参考剑指offer

 1 class Stack {
 2 private:
 3     queue<int> q[2];
 4     int flag=0;
 5 public:
 6     // Push element x onto stack.
 7     void push(int x) {
 8         q[flag].push(x);
 9     }
10 
11     // Removes the element on top of the stack.
12     void pop() {
13         while(q[flag].size()>1){
14             q[1-flag].push(q[flag].front());
15             q[flag].pop();
16         }
17         q[flag].pop();
18         flag=1-flag;
19     }
20 
21     // Get the top element.
22     int top() {
23         return q[flag].back();
24     }
25 
26     // Return whether the stack is empty.
27     bool empty() {
28         if(q[flag].empty()){
29             return true;
30         }
31         return false;
32     }
33 };

 

posted @ 2015-06-17 09:36  影翕  阅读(211)  评论(0编辑  收藏  举报