CS3343/3341 Analysis of Algorithms Spring 2012 |
Queues in Java and C
|
| Queues in Java and C | |
|---|---|
// Queue.java: simple circular queue of chars
public class Queue {
private int QSIZE = 4;
private int q[] = new int[QSIZE];
private int head = 0;
private int tail = 0;
private int size = 0;
public void enqueue(int x) {
if (!isFull()) {
size++;
q[tail] = x;
if (tail == QSIZE - 1) tail = 0;
else tail++;
}
else System.out.println("Overflow");
}
public int dequeue() {
if (isEmpty()) {
System.out.println("Underflow");
return -1;
}
size--;
int x = q[head];
if (head == QSIZE - 1) head = 0;
else head++;
return x;
}
public boolean isEmpty() {
return size == 0;
}
public boolean isFull() {
return size == QSIZE;
}
public int getSize() {
return size;
}
public int getFront() {
if (!isEmpty())
return q[head];
else return -1;
}
public void dumpQ(int n) {
System.out.println("n:" + n +
", size:" + size + ", head:" +
head + ", tail:" + tail +
", frontitem:" + getFront());
}
public static void main(String[] args) {
Queue queue = new Queue();
queue.dumpQ(1);
queue.enqueue(101);queue.dumpQ(2);
queue.enqueue(202);queue.dumpQ(2);
queue.enqueue(303);queue.dumpQ(2);
System.out.println(queue.dequeue());
queue.dumpQ(3);
System.out.println(queue.dequeue());
queue.dumpQ(3);
System.out.println(queue.dequeue());
queue.dumpQ(4);
System.out.println(queue.dequeue());
queue.dumpQ(4);
queue.dumpQ(5);
queue.enqueue(444);queue.dumpQ(6);
queue.enqueue(555);queue.dumpQ(7);
queue.enqueue(666);queue.dumpQ(8);
queue.enqueue(777);queue.dumpQ(9);
queue.enqueue(888);queue.dumpQ(10);
System.out.println(queue.dequeue());
queue.dumpQ(11);
System.out.println(queue.dequeue());
queue.dumpQ(12);
System.out.println(queue.dequeue());
queue.dumpQ(13);
System.out.println(queue.dequeue());
queue.dumpQ(14);
System.out.println(queue.dequeue());
queue.dumpQ(15);
}
}
| // queue.h: header file int dequeue(); void enqueue(int ); int isempty(); int isfull(); int getfront(); void dumpq(); | Common Output |
n:1, size:0, head:0, tail:0, frontitem:-1 n:2, size:1, head:0, tail:1, frontitem:101 n:2, size:2, head:0, tail:2, frontitem:101 n:2, size:3, head:0, tail:3, frontitem:101 101 n:3, size:2, head:1, tail:3, frontitem:202 202 n:3, size:1, head:2, tail:3, frontitem:303 303 n:4, size:0, head:3, tail:3, frontitem:-1 Underflow -1 n:4, size:0, head:3, tail:3, frontitem:-1 n:5, size:0, head:3, tail:3, frontitem:-1 n:6, size:1, head:3, tail:0, frontitem:444 n:7, size:2, head:3, tail:1, frontitem:444 n:8, size:3, head:3, tail:2, frontitem:444 n:9, size:4, head:3, tail:3, frontitem:444 Overflow n:10, size:4, head:3, tail:3, frontitem:444 444 n:11, size:3, head:0, tail:3, frontitem:555 555 n:12, size:2, head:1, tail:3, frontitem:666 666 n:13, size:1, head:2, tail:3, frontitem:777 777 n:14, size:0, head:3, tail:3, frontitem:-1 Underflow -1 n:15, size:0, head:3, tail:3, frontitem:-1 | |