LeetCode 225. Implement Stack using Queues
用queue模拟stack,因为queue只能取front的值,和stack正好相反,因此核心思想是queue保持着与stack相反的顺序,一直逆序,所以每次push进一个新值后,要依次把新值之前的值排到队尾。比如原来q为4、5,push进1,q依次为:4、5、1;5、1、4;1、4、5. 对应的stack最终值为:5、4、1.
1 class Stack { 2 public: 3 // Push element x onto stack. 4 void push(int x) { 5 int size = q.size(); 6 q.push(x); 7 for(int i = 0; i < size; ++i){ 8 int tmp = q.front(); 9 q.pop(); 10 q.push(tmp); 11 } 12 } 13 14 // Removes the element on top of the stack. 15 void pop() { 16 q.pop(); 17 } 18 19 // Get the top element. 20 int top() { 21 return q.front(); 22 } 23 24 // Return whether the stack is empty. 25 bool empty() { 26 return q.empty(); 27 } 28 private: 29 queue<int> q; 30 };