// FIFO Queue implemented as circular array. // end field points after last element. Thus end==start for empty array. public class CircularArray { private T[] elements; int start; int end; public CircularArray(T[] elts) { elements = elts; start = 0; end = 0; } public boolean empty() { return end==start; } public boolean full() { return (((start==0) && end==elements.length-1) || end == start-1); } public void add(T x) { if (!full()) { elements[end] = x; end++; if (end==elements.length) end=0; } } public T first() { return elements[start]; } public T pop() { if (!empty()) { T x = elements[start]; start = start+1; if (start==elements.length) start=0; return x; } else return null; } public String toString() { String S = "["; for (int i = start; i!=end; ) { S = S + elements[i].toString() + " "; i++; if (i==elements.length) i=0; } return S+"]"; } public static void main(String[] args) { CircularArray Q = new CircularArray(new Integer[5]); Q.add(4); Q.add(14); Q.add(23); Q.pop(); Q.add(28); Q.add(34); Q.pop(); System.out.println(Q.toString()); } }