Implement Stack using Queues
2016-02-26 11:34
363 查看
Implementthe 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 mustuse only standard operations of a queue -- which means only push to back,peek/pop from front, size, and is empty operations are valid.
Dependingon your language, queue may not be supported natively. You may simulate a queueby using a list or deque (double-ended queue), as long as you use only standardoperations of a queue.
You mayassume that all operations are valid (for example, no pop or top operationswill be called on an empty stack).
除pop操作外,其他操作可以用queue的单步操作完成。
pop函数的思路如下:
假设queue中的元素是1 2 3 4,右边是头,左边是尾。要删除最左边的元素1。
将队列中除了队尾的元素依次弹出,然后加入到队尾。得到2 3 4 1。最后再将1弹出即可。
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 mustuse only standard operations of a queue -- which means only push to back,peek/pop from front, size, and is empty operations are valid.
Dependingon your language, queue may not be supported natively. You may simulate a queueby using a list or deque (double-ended queue), as long as you use only standardoperations of a queue.
You mayassume that all operations are valid (for example, no pop or top operationswill be called on an empty stack).
除pop操作外,其他操作可以用queue的单步操作完成。
pop函数的思路如下:
假设queue中的元素是1 2 3 4,右边是头,左边是尾。要删除最左边的元素1。
将队列中除了队尾的元素依次弹出,然后加入到队尾。得到2 3 4 1。最后再将1弹出即可。
class Stack { private: queue<int> q; public: // Push element x onto stack. void push(int x) { q.push(x); } // Removes the element on top of the stack. void pop() { for(int i=0;i<q.size()-1;i++){ int n=q.front(); q.pop(); q.push(n); } q.pop(); } // Get the top element. int top() { return q.back(); } // Return whether the stack is empty. bool empty() { return q.empty(); } };
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解