Source of 17.9a.java


  1: protected Node getFirstNode()
  2: {
  3:    return firstNode;
  4: } // end getFirstNode
  5: /** Adds a node to the beginning of a chain. */
  6: protected void addFirstNode(Node newNode)
  7: {
  8:    assert newNode != null : "null argument in addFirstNode";
  9:    newNode.setNextNode(firstNode);
 10:    firstNode = newNode;
 11:    numberOfEntries++;
 12: } // end addFirstNode
 13: /** Adds a node to a chain after a given node. */
 14: protected final void addAfterNode(Node nodeBefore, Node newNode)
 15: 
 16: /** Removes a chain’s first node. */
 17: protected final T removeFirstNode()
 18: 
 19: /** Removes the node after a given one. */
 20: protected final T removeAfterNode(Node nodeBefore)
 21: public T remove(int givenPosition)
 22: {
 23:    T result = null;
 24: 
 25:    if ((givenPosition >= 1) && (givenPosition <= getLength()))
 26:    {
 27:       assert !isEmpty();
 28: 
 29:       if (givenPosition == 1)         // Case 1: Remove first entry
 30:          result = removeFirstNode();
 31:       else                            // Case 2: givenPosition > 1
 32:       {
 33:          Node nodeBefore = getNodeAt(givenPosition - 1);
 34:          result = removeAfterNode(nodeBefore);
 35:       } // end if
 36:       return result;                  // Return removed entry
 37:    }
 38:    else
 39:       throw new IndexOutOfBoundsException(
 40:                 "Illegal position given to remove operation.");
 41: } // end remove