下文是筆者收集的使用隊列實作棧效果的方法分享,如下所示:
實作思路:
使用兩個隊列,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());
}
}
}
}
}