
Implementing a probabilistic skiplists.
Because standard linked lists use traversal methods instead of quick memory access like arrays it’s computationally straining to traverse through 1000000 elements. A skiplist skips nodes by adding an additional dimension to the linked and its probabilistic for adding and removing nodes where as the idealized version requires reconstructing the entire list.



skiplists are interesting data structures. The underlying mechanism is it’s a 2-dimensional probabilistic linked list with some associated height ‘h’ that enables skipping of nodes through key-value pairs. So, compared to a traditional linked list that uses a traversal method to search through all values stored. A skip list starts from the maxLevel/maxheight, determines if “next” points to a key greater than the key provided or a nullptr, and moves down to the level below it if it is. This reduces the time complexity from O(1) with a linked list to O(N) where N Is the maxLevel.
The reason behind why its probabilistic (in this case using a pseudo random number) is because its easier to insert and remove elements, otherwise (if you went with the idealized theoretical form) you would have to reconstruct the entire data structure each and every time you want to add/remove elements.
In my testing when adding 1,000,000 elements to a skiplist it reduced from 6s search with a linked list to less than 1s!