Skip to content

Instantly share code, notes, and snippets.

@IlyaHalsky
Created April 21, 2014 15:09
Show Gist options
  • Save IlyaHalsky/11145382 to your computer and use it in GitHub Desktop.
Save IlyaHalsky/11145382 to your computer and use it in GitHub Desktop.
public class ArrayQueueADT {
private Object[] elements = new Object[10];
private int end = 5;
private int start = 5;
private int size = 0;
public static void enqueue(ArrayQueueADT queue, Object element) {
assert element != null;
ensureCapacity(queue,queue.size+1);
queue.elements[queue.end] = element;
if (queue.end - 1 >= 0) {
queue.end = queue.end - 1;
}
else {
queue.end = queue.elements.length - 1;
}
queue.size++;
}
private static void ensureCapacity(ArrayQueueADT queue, int capacity) {
if (queue.elements.length <= capacity) {
Object[] e = new Object[2 * capacity];
for (int i = 0; i <= queue.start; i++) {
e[i] = queue.elements[i];
}
for (int i = queue.end + capacity; i < 2 * capacity; i++) {
e[i] = queue.elements[i - capacity];
}
queue.end = queue.end + capacity;
queue.elements = e;
}
}
public static Object dequeue(ArrayQueueADT queue) {
assert queue.size > 0;
Object result = queue.elements[queue.start];
if (queue.start - 1 >= 0) {
queue.start = queue.start - 1;
}
else {
queue.start = queue.elements.length - 1;
}
queue.size--;
return result;
}
public static Object peek(ArrayQueueADT queue) {
assert queue.size > 0;
return queue.elements[queue.start];
}
public static boolean isEmpty(ArrayQueueADT queue) {
return queue.size == 0;
}
public static int size(ArrayQueueADT queue) {
return queue.size;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment