前言
栈和队列是算法的一个基本的知识点之一。这篇文章主要介绍三道有关栈和队列的算法题。因为篇幅所限,只介绍push和pop这两种方法的实现
用栈实现队列
用队列实现栈
循环队列的实现
用栈实现队列
入队列的功能我们可以用栈的入栈的功能替代。但问题在于出队列的功能怎么实现。
这里有一个问题,就是栈是后入先出的,队列是先进先出的,两者出入的方式不一样。
那么怎么实现方向的一致呢? 我们可以使用两个栈,一个栈用于输入,一个栈用于输出。当发现输出栈为空的时候,把排列的数据从输入栈一个个弹出,“倒入”到 输出栈中,这样的话,数据排列的方向就刚好被逆转过来了,原本在输入栈中处于栈底的数据被置换到输出栈的栈顶,这时候对它出栈也就同时完成了队列的出列的功能。
下面是具体的图示
1.入队列操作: 等同于对入队列进行入栈操作,图示如下
2.出队列操作: 判断当输出栈为空时,先把输入栈的数据依次弹出并加入到输出栈中
步骤1
步骤2
对输出栈栈顶进行出栈操作,即可完成出队列功能
步骤3
具体代码
import java.util.Stack;
class MyQueue {
private Stack stack1;
private Stack stack2;
private boolean isPushState = true;
/** Initialize