1: public T remove(int givenPosition)
2: {
3: T result = null; // Return value
4: if ((givenPosition >= 1) && (givenPosition <= numberOfEntries))
5: {
6: assert !isEmpty();
7: if (givenPosition == 1) // Case 1: Remove first entry
8: {
9: result = firstNode.getData(); // Save entry to be removed
10: firstNode = firstNode.getNextNode();
11: if (numberOfEntries == 1)
12: lastNode = null; // Solitary entry was removed
13: }
14: else // Case 2: Not first entry
15: {
16: Node nodeBefore = getNodeAt(givenPosition - 1);
17: Node nodeToRemove = nodeBefore.getNextNode();
18: Node nodeAfter = nodeToRemove.getNextNode();
19: nodeBefore.setNextNode(nodeAfter);
20: result = nodeToRemove.getData();
21: if (givenPosition == numberOfEntries)
22: lastNode = nodeBefore; // Last node was removed
23: } // end if
24: numberOfEntries--;
25: }
26: else
27: throw new IndexOutOfBoundsException(
28: "Illegal position given to remove operation.");
29: return result; // Return removed entry
30: } // end remove
31: // Version 4.0