赞
踩
在研究“如何实现具有最大值、最小值和中间值的栈和队列”前,我们先考虑以下问题,然后由此过度到题目问题。
1)如何用两个栈实现队列
2)如何用两个队列实现栈
3)如何实现包含获取最小值函数getMin()的栈
4)如何实现包含获取中间值函数getMedian()的栈
5)如何实现包含获取最小值函数getMin()的队列
在研究问题前,我们可以用2个栈模拟一下具体操作过程,可以总结出以下规律:
入队:元素插入stack1;
出队:如果stack2中为空,先将stack1中元素入栈stack2,然后再将stack2的栈顶元素出栈。否则直接将stack2中元素出栈。
队列为空:stack1和stack2同时为空
队列大小:为stack1和stack2大小之和
具体过程见下图(图来自《剑指offer》)
Java实现代码如下
- public class QueueByStack<E extends Comparable<E>> {
-
- private LinkedList stack1=null;
- private LinkedList stack2=null;
-
- //constructor
- public QueueByStack(){
- stack1=new LinkedList();
- stack2=new LinkedList();
- }//end QueueByStack
-
- public void insert(E e){
- stack1.addLast(e);
- }//
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。