Implementing the skip list data structure