(leetcode)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.
Notes:
- You must use only standard operations of a queue -- which means only
push to back,peek/pop from front,size, andis emptyoperations 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).
Update (2015-06-11):
The class name of the Java function had been updated to MyStack instead of Stack.
Credits:
Special thanks to @jianchao.li.fighter for adding this problem and all test cases.
用一个队列就可实现,看了很多例子觉得discuss里面有个朋友写的很简练,就用了他的丝路,和她基本一致
1 class Stack { 2 public: 3 // Push element x onto stack.. 4 queue<int> a; 5 void push(int x) { 6 a.push(x); 7 } 8 9 // Removes the element on top of the stack. 10 void pop() { 11 size_t i = 0; 12 size_t size = a.size(); 13 for(i = 0; i < size-1; ++i) 14 { 15 a.push(a.front()); 16 a.pop(); 17 } 18 a.pop(); 19 } 20 21 // Get the top element. 22 int top() { 23 return a.back(); 24 } 25 26 // Return whether the stack is empty. 27 bool empty() { 28 return a.empty(); 29 } 30 };

浙公网安备 33010602011771号