自己實現佇列【親測】
阿新 • • 發佈:2019-01-05
-
佇列類
public class MyQueue { private long []arr;//底層陣列實現 private int front;//隊頭 private int rear;//隊尾 private int size;//佇列中有效資料個數 public MyQueue(){ front=0; rear=-1; size=0; arr=new long[10]; } public MyQueue(int maxsize){ front=0; rear=-1; size=0; arr=new long[maxsize]; } /*入隊(隊尾插入)*/ void insert(int value){ if (rear==arr.length-1){//若佇列滿了,繼續插入的話,重置隊尾 rear=-1; } arr[++rear]=value; size++; } /**出隊(隊頭刪除) * 返回刪除的資料 */ public long remove(){ long value=arr[front++]; if(front == arr.length) {/*當佇列中資料被刪完時,front == arr.length,重置front為0*/ front = 0; } size--; return value; } /** * 檢視資料,從隊頭檢視 */ public long peek() { return arr[front]; } /** * 判斷是否為空 */ public boolean isEmpty() { return size == 0; } /** * 判斷是否滿了 */ public boolean isFull() { return size == arr.length; } }
-
測試類
public class Test { public static void main(String[] args) { MyQueue mq=new MyQueue(4); mq.insert(1); mq.insert(2); mq.insert(3); mq.insert(4); System.out.println("是否為空:"+mq.isEmpty()); System.out.println("是否滿了:"+mq.isFull()); System.out.println( "隊頭是:"+mq.peek()); System.out.println("刪除了:"+mq.remove()); System.out.println("刪除後隊頭為"+mq.peek()); System.out.println("刪除後是否為空:"+mq.isEmpty()); System.out.println("刪除後是否滿了:"+mq.isFull()); } }
-
測試結果