diff --git a/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java b/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java index 5cd14f9dd..259406e22 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/SkipList.java @@ -117,7 +117,9 @@ public class SkipList> { } for (int i = 0; i <= layer; i++) { current.previous(i).setNext(i, current.next(i)); - current.next(i).setPrevious(i, current.previous(i)); + if (current.next(i) != null) { + current.next(i).setPrevious(i, current.previous(i)); + } } size--; } diff --git a/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java b/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java index b26de0c55..1bbe11527 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/SkipListTest.java @@ -42,12 +42,26 @@ class SkipListTest { } @Test - void remove() { + void removeFromHead() { SkipList skipList = createSkipList(); + String mostLeftElement = skipList.get(0); int initialSize = skipList.size(); print(skipList); - skipList.remove("a"); + skipList.remove(mostLeftElement); + + print(skipList); + assertEquals(initialSize - 1, skipList.size()); + } + + @Test + void removeFromTail() { + SkipList skipList = createSkipList(); + String mostRightValue = skipList.get(skipList.size() - 1); + int initialSize = skipList.size(); + print(skipList); + + skipList.remove(mostRightValue); print(skipList); assertEquals(initialSize - 1, skipList.size());