1: /** 2: An abstract base class for use in implementing the ADT list 3: by using a chain of nodes. All methods are implemented, but 4: since the class is abstract, no instances can be created. 5: 6: @author Frank M. Carrano 7: @author Timothy M. Henry 8: @version 4.0 9: */ 10: public abstract class LinkedChainBase<T> 11: { 12: private Node firstNode; // Reference to first node 13: private int numberOfEntries; 14: public LinkedChainBase() 15: { 16: initializeDataFields(); 17: } // end default constructor 18: /* < Implementations of the public methods clear, getLength, isEmpty, and toArray go here. > 19: . . . 20: 21: < Implementations of the protected, final methods getNodeAt, getFirstNode, addFirstNode, 22: addAfterNode, removeFirstNode, removeAfterNode, and initializeDataFields go here. > 23: . . . */ 24: protected final class Node 25: { 26: private T data; // Entry in list 27: private Node next; // Link to next node 28: protected Node(T dataPortion) 29: { 30: data = dataPortion; 31: next = null; 32: } // end constructor 33: private Node(T dataPortion, Node nextNode) // PRIVATE! 34: { 35: data = dataPortion; 36: next = nextNode; 37: } // end constructor 38: /* < Implementations of the protected methods getData, setData, and getNextNode go here. > 39: . . . 40: 41: < Implementation of the private method setNextNode goes here. > 42: . . . */ 43: } // end Node 44: } // end LinkedChainBase