1: /** 2: A class that implements the ADT queue by using 3: a two-part circular chain of linked nodes. 4: 5: @author Frank M. Carrano 6: @author Timothy M. Henry 7: @version 5.0 8: */ 9: public final class TwoPartCircularLinkedQueue<T> implements QueueInterface<T> 10: { 11: private Node queueNode; // References first node in queue 12: private Node freeNode; // References node after back of queue 13: 14: public TwoPartCircularLinkedQueue() 15: { 16: freeNode = new Node(null, null); 17: freeNode.setNextNode(freeNode); 18: queueNode = freeNode; 19: } // end default constructor 21: // < Implementations of the queue operations go here. > 22: // . . . 24: private class Node 25: { 26: private T data; // Queue entry 27: private Node next; // Link to next node 28: 29: private Node(T dataPortion) 30: { 31: data = dataPortion; 32: next = null; 33: } // end constructor 34: 35: private Node(T dataPortion, Node linkPortion) 36: { 37: data = dataPortion; 38: next = linkPortion; 39: } // end constructor 40: 41: private T getData() 42: { 43: return data; 44: } // end getData 45: 46: private void setData(T newData) 47: { 48: data = newData; 49: } // end setData 50: 51: private Node getNextNode() 52: { 53: return next; 54: } // end getNextNode 55: 56: private void setNextNode(Node nextNode) 57: { 58: next = nextNode; 59: } // end setNextNode 60: } // end Node 61: } // end TwoPartCircularLinkedQueue