隊列及循環隊列(Java實現)
阿新 • • 發佈:2018-11-17
數據 pub remove rgs public 個數 system style --
package ch03; /* * 隊列類 */ public class MyQueue { // 底層實現是一個數組 private long[] arr; // 有效數據大小 private int elements; // 隊頭 private int front; // 隊尾 private int end; /** * 默認構造方法 */ public MyQueue() { arr = new long[10]; elements = 0; front= 0; end = -1; } /** * 帶參數的構造方法,參數為數組的大小 */ public MyQueue(int maxsize) { arr = new long[maxsize]; elements = 0; front = 0; end = -1; } /** * 添加數據,從隊尾插入 */ public void insert(long value) { arr[++end] = value; elements++; } /** * 刪除數據,從隊頭刪除 */ public long remove() { elements--; return arr[front++]; } /** * 查看數據,從隊頭查看 */ public long peek() { return arr[front]; } /** * 判斷是否為空 */ public boolean isEmpty() { return elements == 0; }/** * 判斷是否滿了 */ public boolean isFull() { return elements == arr.length; } }
package ch03; /* * 循環隊列類 */ public class MyCycleQueue { // 底層實現是一個數組 private long[] arr; // 有效數據大小 private int elements; // 隊頭 private int front; // 隊尾 private int end; /** * 默認構造方法 */ public MyCycleQueue() { arr = new long[10]; elements = 0; front = 0; end = -1; } /** * 帶參數的構造方法,參數為數組的大小 */ public MyCycleQueue(int maxsize) { arr = new long[maxsize]; elements = 0; front = 0; end = -1; } /** * 添加數據,從隊尾插入 */ public void insert(long value) { if (end == arr.length - 1) { end = -1; } arr[++end] = value; elements++; } /** * 刪除數據,從隊頭刪除 */ public long remove() { long value = arr[front++]; if (front == arr.length) { front = 0; } elements--; return value; } /** * 查看數據,從隊頭查看 */ public long peek() { return arr[front]; } /** * 判斷是否為空 */ public boolean isEmpty() { return elements == 0; } /** * 判斷是否滿了 */ public boolean isFull() { return elements == arr.length; } }
package ch03; public class TestMyQueue { public static void main(String[] args) { MyCycleQueue mq = new MyCycleQueue(4); mq.insert(23); mq.insert(45); mq.insert(13); mq.insert(1); System.out.println(mq.isFull()); System.out.println(mq.isEmpty()); System.out.println(mq.peek()); System.out.println(mq.peek()); while (!mq.isEmpty()) { System.out.print(mq.remove() + " "); } System.out.println(); mq.insert(23); mq.insert(45); mq.insert(13); mq.insert(1); while (!mq.isEmpty()) { System.out.print(mq.remove() + " "); } } }
隊列及循環隊列(Java實現)