久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么用Java棧實現隊列

172次閱讀
沒有評論

共計 1277 個字符,預計需要花費 4 分鐘才能閱讀完成。

使用 Java 的棧來實現隊列可以通過兩個棧來實現。一個棧用來存儲隊列的元素,另一個棧用來輔助操作。

具體實現步驟如下:

  1. 創建兩個棧,一個用于存儲隊列的元素,命名為stack1,另一個用于輔助操作,命名為stack2
  2. 實現隊列的入隊操作 enqueue,即將元素添加到stack1 中。
  3. 實現隊列的出隊操作 dequeue,首先判斷stack2 是否為空,若為空,則將 stack1 中的元素依次彈出并壓入 stack2 中,然后從 stack2 中彈出棧頂元素作為出隊元素;若 stack2 不為空,則直接從 stack2 中彈出棧頂元素作為出隊元素。
  4. 實現隊列的獲取隊首元素操作 peek,同樣需要先判斷stack2 是否為空,若為空,則將 stack1 中的元素依次彈出并壓入 stack2 中,然后獲取 stack2 的棧頂元素作為隊首元素;若 stack2 不為空,則直接獲取 stack2 的棧頂元素作為隊首元素。
  5. 實現隊列的判空操作 isEmpty,判斷stack1stack2是否都為空,若是,則隊列為空;否則,隊列不為空。

下面是 Java 代碼的實現:

import java.util.Stack;

public class QueueWithStacks {private Stack<Integer> stack1;
    private Stack<Integer> stack2;

    public QueueWithStacks() {stack1 = new Stack<>();
        stack2 = new Stack<>();}

    public void enqueue(int element) {stack1.push(element);
    }

    public int dequeue() {if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());
            }
        }
        return stack2.pop();}

    public int peek() {if (stack2.isEmpty()) {while (!stack1.isEmpty()) {stack2.push(stack1.pop());
            }
        }
        return stack2.peek();}

    public boolean isEmpty() {return stack1.isEmpty() && stack2.isEmpty();
    }
}

使用示例:

public class Main {public static void main(String[] args) {QueueWithStacks queue = new QueueWithStacks();
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);
        System.out.println(queue.dequeue());  // 輸出: 1
        System.out.println(queue.peek());  // 輸出: 2
        System.out.println(queue.isEmpty());  // 輸出: false
    }
}

以上就是使用 Java 的棧實現隊列的方法。

丸趣 TV 網 – 提供最優質的資源集合!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-12-13發表,共計1277字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 象山县| 蓬溪县| 岐山县| 冕宁县| 宁晋县| 鄂温| 米泉市| 万全县| 龙陵县| 南城县| 乌拉特前旗| 兴隆县| 法库县| 腾冲县| 安宁市| 钦州市| 绥化市| 通城县| 太仆寺旗| 东乡县| 南召县| 石泉县| 天镇县| 平陆县| 闻喜县| 嘉荫县| 东乌珠穆沁旗| 贡嘎县| 蒙自县| 榆林市| 师宗县| 东安县| 淮阳县| 平邑县| 太和县| 蛟河市| 东莞市| 东丰县| 广元市| 大兴区| 虞城县|