2.使用陣列模擬佇列
阿新 • • 發佈:2022-01-16
1.定義變數
private final int maxSize; // 表示陣列的最大容量
private int front; // 佇列頭
private int rear; // 佇列尾
private final int[] arr; // 該資料用於存放資料, 模擬佇列
2.建立佇列的構造器
// 建立佇列的構造器 public ArrayQueue(int arrMaxSize) { maxSize = arrMaxSize; arr = new int[maxSize]; front = -1; // 指向佇列頭部,分析出front是指向佇列頭的前一個位置. rear = -1; // 指向佇列尾,指向佇列尾的資料(即就是佇列最後一個數據) }
3.判斷佇列是否滿
public boolean isFull() {
return rear == maxSize - 1;
}
4.判斷佇列是否為空
public boolean isEmpty() {
return rear == front;
}
5.新增資料到佇列
public void addQueue(int n) {
// 判斷佇列是否滿
if (isFull()) {
System.out.println("佇列滿,不能加入資料~");
return;
}
rear++; // 讓rear 後移
arr[rear] = n;
}
6.獲取佇列的資料, 出佇列
public int getQueue() {
// 判斷佇列是否空
if (isEmpty()) {
// 通過丟擲異常
throw new RuntimeException("佇列空,不能取資料");
}
front++; // front後移
return arr[front];
}
7.顯示佇列的所有資料
public void showQueue() { // 遍歷 if (isEmpty()) { System.out.println("佇列空的,沒有資料~~"); return; } for (int i = 0; i < arr.length; i++) { System.out.printf("arr[%d]=%d\n", i, arr[i]); } }
8.顯示佇列的頭資料, 注意不是取出資料
public int headQueue() {
// 判斷
if (isEmpty()) {
throw new RuntimeException("佇列空的,沒有資料~~");
}
return arr[front + 1];
}