Queue in Java |
The source below can be found in: Queue.java and QueueTest.java.
Queue Implementation: Queue.java | Test the Queue: QueueTest.java |
---|---|
// Queue.java: queue implementation public class Queue { private int qMaxSize;// max queue size private int fp = 0; // front pointer private int rp = 0; // rear pointer private int qs = 0; // size of queue private char[] q; // actual queue public Queue(int size) { qMaxSize = size; fp = 0; rp = 0; qs = 0; q = new char[qMaxSize]; } public char delete() { if (!emptyq()) { qs--; fp = (fp + 1)%qMaxSize; return q[fp]; } else { System.err.println("Underflow"); return '?'; } } public void insert(char c) { if (!fullq()) { qs++; rp = (rp + 1)%qMaxSize; q[rp] = c; } else System.err.println("Overflow\n"); } public boolean emptyq() { return qs == 0; } public boolean fullq() { return qs == qMaxSize; } public void printq() { System.out.print("Size: " + qs + ", rp: " + rp + ", fp: " + fp + ", q: "); for (int i = 0; i < qMaxSize; i++) System.out.print("q[" + i + "]=" + q[i] + "; "); System.out.println(); } } | // QueueTest.java: test the queue import java.io.*; public class QueueTest { // in: reader for reading input data private static Reader in = new InputStreamReader(System.in); private static char getNextChar() { char ch = ' '; try { ch = (char)in.read(); } catch (Exception exception) { System.err.println("Read Error"); ch = ' '; } return ch; } public static void main(String[] args) { Queue queue = new Queue(4); // 10 chars char ch; while ((ch = getNextChar()) != 'q') { switch (ch) { case 'i': ch = getNextChar(); queue.insert(ch); System.out.println(ch + " inserted"); break; case 'd': System.out.println(queue.delete() + " deleted"); break; case 'p': queue.printq(); break; default: System.out.println("Input error"); } while ((ch = getNextChar()) != '\n') ; } } } |
Execution of the program: Interactive session | |
% javac Queue.java % javac QueueTest.java % java QueueTest ia a inserted ib b inserted p Size: 2, rp: 2, fp: 0, q: q[0]=; q[1]=a; q[2]=b; q[3]=; fp^ rp^ ic c inserted id d inserted p Size: 4, rp: 0, fp: 0, q: q[0]=d; q[1]=a; q[2]=b; q[3]=c; rp,fp^ d a deleted d b deleted p Size: 2, rp: 0, fp: 2, q: q[0]=d; q[1]=a; q[2]=b; q[3]=c; rp^ fp^ ix x inserted iy y inserted p Size: 4, rp: 2, fp: 2, q: q[0]=d; q[1]=x; q[2]=y; q[3]=c; rp,fp^ d c deleted d d deleted d x deleted d y deleted p Size: 0, rp: 2, fp: 2, q: q[0]=d; q[1]=x; q[2]=y; q[3]=c; rp,fp^ d Underflow ? deleted ir r inserted is s inserted it t inserted iu u inserted iv Overflow v inserted p Size: 4, rp: 2, fp: 2, q: q[0]=s; q[1]=t; q[2]=u; q[3]=r; rp,fp^ q % |