如何使用一個佇列實現一個棧效果呢?
阿新 • • 發佈:2021-11-13
下文是筆者收集的使用佇列實現棧效果的方法分享,如下所示:
實現思路:
使用兩個佇列,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()); } } } } }