[leetcode 225] Implement Stack using Queues

来源:转载

Question:

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

用两个队列,每次出栈都将que队列中前面的元素移出去到st中,最后一个元素出栈后再将所有数据入队到que中

class Stack {private: queue<int> que,st;public: // Push element x onto stack. void push(int x) { que.push(x); } // Removes the element on top of the stack. void pop() { int n = que.size(); for(int i = 0; i < n-1; i++){ int tem = que.front(); st.push(tem); que.pop(); } que.pop(); while(!st.empty()){ que.push(st.front()); st.pop(); } } // Get the top element. int top() { int n = que.size(); int top; for(int i = 0; i < n-1; i++){ int tem = que.front(); st.push(tem); que.pop(); } top = que.front(); st.push(top); que.pop(); while(!st.empty()){ que.push(st.front()); st.pop(); } return top; } // Return whether the stack is empty. bool empty() { return que.empty(); }};




分享给朋友:
您可能感兴趣的文章:
随机阅读: