CS 225 Lab #11 – Skip Lists by phh16497


									CS 225 Lab #11 – Skip Lists
Skip List
    −   sorted arrays are nice for binary search, but they are
        bad when you add or remove elements
    −   alternative to AVL trees
    Skip List – a probabilistic extension of the
    linked list data structure to speed up the
    searching process
    −   based on multiple parallel, sorted linked lists
    −   has high probability of logarithmic running time
Skip List (2)
    We want to:
    −   create use sorted link lists to achieve logarithmic
        running times, but there is no mechanism for finding
        the middle node in a linked list in O(1) time
    −   Have n-levels of linked lists, with each level having
        probability p that an element exists at that level
Skip List Construction
    Use some probability p that an element appears
    in the next level of skip lists
    Start with all elements in the bottom level.
    Use a pseudo random number generator modulo
    (1/p) to determine if an element exists in the
    next level up.
    Stop this process when no elements are chosen
    to exist in the next level up
Skip List Insertion
    If p = ½ and we add a new element to the skip
    list, the following are the probabilities of the
    element appearing on the next levels:
    −   1 that is it is a level-0 node
    −   1/2 that it is a level-1 node
    −   1/4 that it is a level-2 node
    −   1/8 that it is a level-3 node
    −   1/16 that it is a level-4 node
    −   1/32 that it is a level-5 node
Skip List Insertion (2)
Searching a Skip List
    Scan Forward Step – move a pointer along the
    current level until it is at the right-most position
    on the present level with a key <= k
    −   If a node is found that matches the key, returns its
    Drop Down Step – if you are not in the bottom
    row, move down one level in the skip list. If you
    are, then no element exists with that key
Skip List Implementation
    Today you'll be implementing the Skip List data
    Simplifying Assumptions
    −   keys are unique positive integers
    −   by default, allocate space for 20 levels
    −   our skip lists only store keys, but not data
    We provided implementation for the insert
    function, but not remove or find functions

To top