public class BoundedQueue { private int[] a; private int head = 0; private int tail = 0; private int count = 0; public BoundedQueue(int n) { a = new int[n]; } public int size() { return a.length; } public int length() { return count; } public void enqueue(int value) { count = count+1; a[tail] = value; tail = tail+1; if (tail == a.length) tail = 0; } public int dequeue() { count = count-1; int value = a[head]; head = head+1; if (head == a.length) head = 0; return value; } public int peek() { return a[head]; } }