使用两个栈实现队列
2016-03-02 19:24
295 查看
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
思路:用两个栈来模拟队列,一个栈作为存储,另一个栈作为交换空间。队列的push操作就直接push到第一个栈中,队列的pop操作,需要取得第一个栈低的元素,所以先把第一个栈的元素出栈,入栈到第二个队列,那么取的元素就是第二个栈的栈顶,第二个栈直接出栈即可。然后把剩下的数据在还原回去。
实现代码:
思路:用两个栈来模拟队列,一个栈作为存储,另一个栈作为交换空间。队列的push操作就直接push到第一个栈中,队列的pop操作,需要取得第一个栈低的元素,所以先把第一个栈的元素出栈,入栈到第二个队列,那么取的元素就是第二个栈的栈顶,第二个栈直接出栈即可。然后把剩下的数据在还原回去。
实现代码:
import java.util.Stack; public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void push(int node) { stack1.push(node); } public int pop() { while(!stack1.isEmpty()) { stack2.push(stack1.pop()); } int ret = stack2.pop(); while(!stack2.isEmpty()) { stack1.push(stack2.pop()); } return ret; } }
相关文章推荐
- 前端试题-HTML5的新特性(1)
- backround
- hdu Kth number
- java中Class对象详解
- Leetcode:235. Lowest Common Ancestor of a Binary Search Tree(JAVA)
- 解决oracle客户端可以连接11g rac vip,但是不能连接scan ip问题
- AngularJS 反模式
- 改动mac环境变量,并配置gradle
- 最小公倍数(大数)
- Oracle 11g中recyclebin参数的微小变化
- 树链剖分模板题汇总
- HttpApplication的处理管道19个事件。
- 给input元素添加float. 去除IE6 下input的空隙
- Android底部菜单的两种实现方式
- 关于Recycle Bin是什么以及实验
- IE6下绝对定位元素和浮动元素并列绝对定位元素消失
- Servlet中doGet()方法得到的中文是乱码解决办法
- SSH原理与运用(二):远程操作与端口转发
- GoldenGate常见异常处理
- 51nod1630 B君的竞技场