Implement Stack using Queues

Description:

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 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).

Code:

 1 class Stack {

 2 public:

 3     // Push element x onto stack.

 4     void push(int x) {

 5         m.push_front(x);

 6     }

 7 

 8     // Removes the element on top of the stack.

 9     void pop() {

10         if (!m.empty())

11             m.pop_front(); 

12     }

13 

14     // Get the top element.

15     int top() {

16         if (!m.empty())

17             return m.front();

18     }

19 

20     // Return whether the stack is empty.

21     bool empty() {

22        if (m.size()==0)

23         return true;

24        else

25         return false;

26     }

27     private:

28     deque<int>m;

29 };
View Code

 

你可能感兴趣的:(Queue)