1. 程式人生 > 其它 >2.使用陣列模擬佇列

2.使用陣列模擬佇列

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];
	}