[LeetCode]Implement Stack using Queues
Implement Stack using Queues
Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis empty
operations are valid. - Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
- You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
两个queue实现stack。
q1移入q2,留下一个,就是top和pop的那个数了。
1 class Stack { 2 public: 3 queue<int> q1,q2; 4 // Push element x onto stack. 5 void push(int x) { 6 q1.push(x); 7 } 8 9 // Removes the element on top of the stack. 10 void pop() { 11 while(q1.size()>1) 12 { 13 int tmp = q1.front(); 14 q1.pop(); 15 q2.push(tmp); 16 } 17 q1.pop(); 18 while(q2.size()>0) 19 { 20 int tmp = q2.front(); 21 q2.pop(); 22 q1.push(tmp); 23 } 24 } 25 26 // Get the top element. 27 int top() { 28 while(q1.size()>1) 29 { 30 int tmp = q1.front(); 31 q1.pop(); 32 q2.push(tmp); 33 } 34 return q1.front(); 35 } 36 37 // Return whether the stack is empty. 38 bool empty() { 39 if(q1.empty() && q2.empty()) return true; 40 else return false; 41 } 42 };