1. 程式人生 > 其它 >如何使用一個佇列實現一個棧效果呢?

如何使用一個佇列實現一個棧效果呢?

下文是筆者收集的使用佇列實現棧效果的方法分享,如下所示:

實現思路:

使用兩個佇列,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()); } } } } }