//用數組實現循環隊列 public class Queue{ private int maxSize; private int[] queArray; private int front; private int nItems; //構造函數 public Queue(int s){ maxSize = s; queArray = new int[maxSize]; front = 0; rear = -1; nItems = 0; } //插入一個新數據項 public void insert(int newData){ if(rear == maxSize - 1){ rear = -1; } queArray[++rear] = newData; nItems++; } //刪除一個數據項 public int remove(){ int temp = queArray[front++]; if(front == maxSize){ front = 0; } nItems--; return temp; } public int peekFront(){ return queArray[front]; } public boolean isEmpty(){ if(nItems == maxSize){ return true; }else{ return false; } } public int size(){ return nItems; } } ///////////////////////////////////////////////////////////////////////////////////// class Link{ public int data; public next; public Link(int data){ this.data = data; } } class FirstLastList{ private first; privare last; public boolean isEmpty(){ if(first == null){ return true; }else{ return false; } } public boolean insertLast(int data){ Link newLink = new Link(data); if(isEmpty){ first = newLink; }else{ last.next = newLink; } last = newLink; } public int deleteFirst(){ int temp = first.data; if(first.next == null){ last = null; } first = first.next; return temp; } } //用雙端鏈表實現循環隊列 public class QueueLink{ private FirstLastLink; public LinkQueue(){ theList = new FristLastLink(); } public void insert(int data){ theList.insertLast(data); } public int delete(){ return theList.deleteFrist(); } }