[LeetCode]Implement Queue using Stacks
2015-07-18 10:07
627 查看
Implement the following operations of a queue using stacks.
push(x) -- Push element x to the back of queue.
pop() -- Removes the element from in front of queue.
peek() -- Get the front element.
empty() -- Return whether the queue is empty.
Notes:
You must use only standard operations of a stack -- which means only push
to top
, peek/pop from top
, size
,
and is empty
operations are valid.
Depending on your language, stack may not be supported natively. You may simulate a stack by using a list or deque (double-ended queue), as long as you use only standard operations of a stack.
You may assume that all operations are valid (for example, no pop or peek operations will be called on an empty queue).
[思路]利用两个堆栈实现队列结构。最容易想到的,push时,push入一个堆栈中。pop时,把堆栈内所有元素弹出到另一个堆栈中(利用两次后入先出实现先入先出),再把元素弹出。特别注意一点,当第二个堆栈不是全空的时候,pop出堆栈顶即可;全空的时候要把第一个堆栈中元素全部弹出到另一个堆栈。不必把第二个堆栈中元素全部弹回第一个堆栈。
class Queue { private: stack<int> stack1; stack<int> stack2; public: // Push element x to the back of queue. void push(int x) { stack1.push(x); } // Removes the element from in front of queue. void pop(void) { if(!stack2.empty()){ stack2.pop(); } else{ while(!stack1.empty()){ int temp = stack1.top(); stack1.pop(); stack2.push(temp); } stack2.pop(); } } // Get the front element. int peek(void) { if(!stack2.empty()){ return stack2.top(); } else{ while(!stack1.empty()){ int temp = stack1.top(); stack1.pop(); stack2.push(temp); } return stack2.top(); } } // Return whether the queue is empty. bool empty(void) { return stack1.empty()&&stack2.empty(); } };
相关文章推荐
- 【.Net码农】WPF 模拟UI 键盘录入
- UVA 1594 Ducci Sequence(两极问题)
- Event Handling Guide for iOS--事件驱动指南
- Number Sequence
- JAVA UUID 生成
- Quicksum
- Number Sequence
- Windows 10 Build 10240暂不支持全新安装 没有支持纯净安装的路径
- UIButton的图片和文字相对位置调整
- 安卓布局查看器uiautomatorviewer的使用
- Intellij Idea 生成serialVersionUID的方法
- how to get rid of the UITabBarItem padding
- Bluetooth 初识
- iOS UIlabel添加中划线
- executeQuery、executeUpdate 或 execute 方法
- 从request获取工程各种路径总结
- Android开发UI之Notification
- String,StringBuffer与StringBuilder的区别详解
- iOS开发——UI基础-按钮内边距,图片拉伸
- uva 10534 Wavio Sequence XX序列(第一个词不认识)