如何用栈实现队列功能以及如何用队列实现栈功能
首先,我们要明确什么是栈和队列。
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特性:后进先出。
队列是一种先进先出的线性表。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。
栈实现队列
栈实现队列的基本思路:构造两个栈,其中一个用来存放存进来的数据,另外一个用来倒置其中的数据实现输出。
public static class twoStacksQueue {
private Stack<Integer> stackPop;
private Stack<Integer> stackPush;
public twoStacksQueue() {
stackPop = new Stack<>();
stackPush = new Stack<>();
}
public void add(int pushInt) {
stackPush.push(pushInt);
}
public int poll() {
if (stackPop.empty() && stackPush.empty()) {
throw new RuntimeException("Queue is empty!");
} else if (stackPop.empty()) {
while (!stackPush.isEmpty(