資料結構 - 佇列
阿新 • • 發佈:2018-11-28
package com.test.testQueue; public class TestQueue { private int start = 0; //對列頭初始位置 private int end = 0; //佇列尾初始位置 private int size = 0; //元素的個數 private int length = 5; //佇列的長度 private int[] array = new int[length]; //用陣列來模擬佇列,用下標的數學變化來模擬迴圈。 /** * 判斷佇列是否為空 * @return 空或者不空 */ public boolean isEmpty() { return size == 0; } /** * 判斷佇列是否為滿狀態 * @return 滿或者不滿 */ public boolean isFull() { return (end + 1) % length == start; } /** * 在佇列的末尾處入隊 * @param value 入隊的元素值 * @throws Exception 不能在滿佇列中入隊 */ public void enqueue(int value) throws Exception { if (isFull()) throw new Exception(); array[end] = value; end = (end + 1) % length; size++; } /** * 在佇列的頭部出列 * @return 出列的元素值 * @throws Exception 不能在空佇列中出列 */ public int dequeue() throws Exception { if (isEmpty()) throw new Exception(); int value = array[start]; start = (start + 1) % length; size--; return value; } /** * 用一個變數i來記錄start的值,一共輸出j = 0 -> size - 1 個元素值。 * 為什麼不能直接用start?因為在出列中start參與運算,造成值發生改變。 */ public void print() { for (int i = start, j = 0; j < size; i = (i + 1) % length, j++) { System.out.println(array[i] + " " + i); } } public static void main(String[] args) throws Exception { TestQueue queue = new TestQueue(); queue.enqueue(1); queue.enqueue(2); System.out.println(queue.size); queue.print(); int value = queue.dequeue(); queue.print(); } }