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 };