下文是笔者收集的使用队列实现栈效果的方法分享,如下所示:
实现思路:
使用两个队列,poll时,每次互相倒出,得到最后一个结果,如下所示:
package com.java265.algorithm;
import java.util.Queue;
/*
* 作者:java265.com
*使用一个队列实现一个栈效果
* */
public class QueueToStack {
public static void main(String[] args) {
// 先进显出
QueueToStackStance.add(10);
QueueToStackStance.add(9);
QueueToStackStance.add(1);
QueueToStackStance.add(1110);
System.out.println("=============");
// 实现栈效果
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
QueueToStackStance.poll();
}
}
class QueueToStackStance {
static Queue<Integer> queue1 = new java.util.LinkedList<>();
static Queue<Integer> queue2 = new java.util.LinkedList<>();
static int size = 0;
static {
}
static void add(int a) {
if (queue2.size() > 0) {
queue2.add(a);
} else {
queue1.add(a);
}
}
static void poll() {
if (queue2.size() > 0) {
while (!queue2.isEmpty()) {
if (queue2.size() != 1) {
queue1.add(queue2.poll());
} else {
System.out.println(queue2.poll());
}
}
} else {
while (!queue1.isEmpty()) {
if (queue1.size() != 1) {
queue2.add(queue1.poll());
} else {
System.out.println(queue1.poll());
}
}
}
}
}