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(); // Remove entry
11: }
12: else // Case 2: Not first entry
13: {
14: Node nodeBefore = getNodeAt(givenPosition - 1);
15: Node nodeToRemove = nodeBefore.getNextNode();
16: result = nodeToRemove.getData(); // Save entry to be removed
17: Node nodeAfter = nodeToRemove.getNextNode();
18: nodeBefore.setNextNode(nodeAfter); // Remove entry
19: } // end if
20: numberOfEntries--; // Update count
21: return result; // Return removed entry
22: }
23: else
24: throw new IndexOutOfBoundsException(
25: "Illegal position given to remove operation.");
26: } // end remove
27: // Version 4.0