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