/** * This implements a non-array version of a queue */ //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ public class QThingy // save as QThingy.java { private int value; private QThingy next; public QThingy(int value, QThingy next) { setValue(value); setQThingy(next); } public QThingy(int value) { this(value, null); } public QThingy() { this(0); } public void setValue(int value) { this.value = value; } public int getValue() { return this.value; } public void setNext(Qthingy next) { this.next = next; } public QThingy getNext() { return this.next; } } //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ class JollyQ4 implements Queue { private QThingy header, front, back; private int length; static final int DEFAULT_SIZE = 0; public JollyQ4(int m) // this int m is quite vacuous!!! { header = new QThingy(); back = header; length = 0; } public JollyQ4() { this( DEFAULT_SIZE ); } public void enterQ( int a ) { QThingy tempQThingy = new QThingy( a ); back.setNext(tempQThingy); back = tempQThingy; if ( isQEmpty() ) front = back; length++; } public int leaveQ() { if (!isQEmpty() ) { int tempValue = front.getValue(); front = front.getNext(); length--; return tempValue; } else { System.out.println("Awfully sorry, but we're empty"); return 0; // this is not ideal for an error condition // should really have some exception handling here } } public int peekAtQ() { if ( !isQEmpty() ) return front.getValue(); return 0; // this is not ideal for an error condition // should really have some exception handling here} public int qLength(){ return length; } public boolean isQEmpty(){ return (length == 0); } public boolean isQFull(){ return false; } public int qCapacity(){ return Integer.MAX_VALUE; } // total capacity }