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 backpeek/pop from frontsize, 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.

 1 class Stack {
 2 private:
 3     queue <int> q_1;
 4     queue <int> q_2;
 5 public:
 6     // Push element x onto stack.
 7     void push(int x) {
 8         if(q_1.empty())
 9           q_1.push(x);
10         else
11         {
12             while(!q_1.empty())
13             {
14                 q_2.push(q_1.front());
15                 q_1.pop();
16             }
17             q_1.push(x);
18             while(!q_2.empty())
19             {
20                 q_1.push(q_2.front());
21                 q_2.pop();
22             }
23         }
24     }
25 
26     // Removes the element on top of the stack.
27     void pop() {
28         q_1.pop();
29     }
30 
31     // Get the top element.
32     int top() {
33         return q_1.front();
34     }
35 
36     // Return whether the stack is empty.
37     bool empty() {
38         return q_1.empty();
39     }
40 };

 

posted @ 2015-07-23 12:32  鸭子船长  阅读(163)  评论(0编辑  收藏  举报