91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

怎么用Java棧實現隊列

小億
86
2023-11-09 00:47:30
欄目: 編程語言

使用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的棧實現隊列的方法。

0
开鲁县| 怀远县| 长葛市| 南投市| 新源县| 资中县| 沂源县| 仙居县| 晋宁县| 乾安县| 普格县| 江都市| 丰都县| 武山县| 岳阳县| 渝中区| 绥滨县| 宿松县| 应城市| 龙山县| 石泉县| 旬阳县| 潼南县| 尉犁县| 克拉玛依市| 开远市| 中宁县| 贡觉县| 徐闻县| 青岛市| 阿城市| 阿克| 新丰县| 宜阳县| 梨树县| 陵川县| 金沙县| 遂川县| 共和县| 新余市| 泸州市|