環形佇列 陣列實現 介紹與實現 轉
阿新 • • 發佈:2021-08-14
環形佇列可以使用陣列實現,也可以使用迴圈連結串列實現。
package www.bittech; public class MyCircularQueue { private int front;//佇列頭 private int rear;//佇列尾 private int usedSize;//資料個數 private int[] elem;//陣列 public MyCircularQueue(int k){ this.elem=new int[k]; this.front=0; this.rear=0; this.usedSize=0; } public boolean enQueue(int value){ if(isFull()){ return false; } this.elem[this.rear]=value; this.usedSize++; this.rear=(this.rear+1)%this.elem.length; return true; } //隊尾下標加上1在% public boolean isFull(){ if((this.rear+1)%this.elem.length==this.front){ return true; } return false; } public boolean isEmpty(){ return this.rear==this.front; } public boolean deQueue(int value){ if(isEmpty()){ return false; } this.elem[front]=value; this.front=(this.front+1)%this.elem.length; this.usedSize--; return true; } public int Front(){ if(isEmpty()){ throw new UnsupportedOperationException("佇列為空"); } return this.elem[this.front]; } public int Rear(){ if(isEmpty()){ throw new UnsupportedOperationException("佇列為空"); } int index=this.rear == 0 ? this.elem.length-1 : this.rear-1; return this.elem[index]; } }