栈和队列----由两个栈组成队列

Posted Demrystv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈和队列----由两个栈组成队列相关的知识,希望对你有一定的参考价值。

由两个栈组成队列

 

由两个栈实现一个队列,支持队列的基本操作(add poll peek),需要注意的是,stackPush向stackPop中压入数据,必须一次性的把stackPush中的元素全部压入,此外,如果stackPop不为空,不能向stackPop中压入数据。

 

package com.test;

import java.util.Stack;

/**
 * Created by Demrystv.
 */
public class TwoStacksQueue {
    Stack<Integer> stackPush = new Stack<Integer>();
    Stack<Integer> stackPop = new Stack<Integer>();

    public void add(int pushInt){
        stackPush.push(pushInt);
    }

    //poll是检索并删除这个队列的头
    public int poll(){
        if(stackPop.isEmpty() && stackPush.isEmpty()){
            throw new RuntimeException("Queue is empty.");
        }else if (stackPop.isEmpty()){
            while (!stackPush.isEmpty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.pop();
    }

    //peek是检索但不删除这个队列的头
    public int peek(){
        if(stackPop.isEmpty() && stackPush.isEmpty()){
            throw new RuntimeException("Queue is empty.");
        }else if (stackPop.isEmpty()){
            while (!stackPush.isEmpty()){
                stackPop.push(stackPush.pop());
            }
        }
        return stackPop.peek();
    }
}

 

以上是关于栈和队列----由两个栈组成队列的主要内容,如果未能解决你的问题,请参考以下文章

由两个栈组成的队列

由两个栈组成的队列(C++实现)

由两个栈组成队列

由两个栈组成的队列

数据结构和算法之栈和队列一:两个栈模拟一个队列以及两个队列模拟一个栈

面试准备之刷题总结:栈和队列