中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

怎么用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
礼泉县| 高邑县| 湘乡市| 达尔| 图木舒克市| 怀柔区| 黄浦区| 郓城县| 平乡县| 尼玛县| 丹东市| 张掖市| 启东市| 香格里拉县| 稻城县| 岫岩| 保德县| 九龙县| 迁西县| 呼伦贝尔市| 类乌齐县| 休宁县| 安吉县| 明溪县| 绥宁县| 武陟县| 浦城县| 三门县| 潍坊市| 长岭县| 凌源市| 柞水县| 新郑市| 涿州市| 汶川县| 德州市| 乌兰察布市| 宾川县| 惠州市| 苗栗市| 敦化市|