(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, and is 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).

 

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

 

posted @ 2015-08-04 14:35  sunalive  Views(164)  Comments(0)    收藏  举报