回顧資料結構-陣列佇列
阿新 • • 發佈:2018-12-04
在上篇的陣列實現類基礎下實現佇列。
佇列就像排隊吃飯。先來的先打飯,打完就走。後來的排在隊伍後面,當你排到隊伍第一個時,就可以打飯走人了。
貼程式碼
package duilie;
public interface Queue<E> {
int getSize();
boolean isEmpty();
void enqueue(E e);
E dequeue();
E getFront();
}
package duilie; import shuzu.Array; public class ArrayQueue<E> implements Queue<E> { private Array<E> array; //一直佇列大小建立佇列 public ArrayQueue(int capacity){ array = new Array<>(capacity); } //預設構造佇列 public ArrayQueue(){ array = new Array<>(); } //獲得佇列長度 public int getSize(){ return array.getSize(); } //判斷佇列是否為空 public boolean isEmpty(){ return array.isEmpty(); } //獲得佇列大小 public int getCapacity(){ return array.getCapacity(); } //入隊 public void enqueue(E e){ array.addLast(e); } //出隊 public E dequeue(){ return array.removeFirst(); } //獲得隊首元素 public E getFront(){ return array.getFirst(); } //重寫string方法 public String toString(){ StringBuilder res = new StringBuilder(); res.append("Queue:"); res.append("front [ "); for(int i = 0;i < array.getSize();i++){ res.append(array.get(i)); if(i != array.getSize()-1) res.append(","); } res.append("] tail"); return res.toString(); } //測試 public static void main(String []arg){ ArrayQueue<Integer> aq = new ArrayQueue<>(); for(int i = 0;i < 10;i++){ aq.enqueue(i); System.out.println(aq); if(i % 3 == 2){ aq.dequeue(); System.out.println(aq); } } } }