Presentation is loading. Please wait.

Presentation is loading. Please wait.

Skip List: Implementation

Similar presentations


Presentation on theme: "Skip List: Implementation"— Presentation transcript:

1 Skip List: Implementation
- + S2 - 34 + S1 - 23 34 + Start of 41. S0 - 12 23 34 45 +

2 Lecture No.41 Data Structure Dr. Sohail Aslam

3 Implementation: TowerNode
40 50 60 head tail 20 30 26 57 Tower Node TowerNode will have array of next pointers. Actual number of next pointers will be decided by the random procedure. Define MAXLEVEL as an upper limit on number of levels in a node.

4 Implementation: QuadNode
A quad-node stores: item link to the node before link to the node after link to the node below link to the node above This will require copying the key (item) at different levels quad-node x Start lecture 41

5 Skip Lists with Quad Nodes
- + S2 - 31 + S1 - 23 31 34 64 + S0 - 12 23 26 31 34 44 56 64 78 +

6 Performance of Skip Lists
In a skip list with n items The expected space used is proportional to n. The expected search, insertion and deletion time is proportional to log n. Skip lists are fast and simple to implement in practice

7 Implementation 5: AVL tree
An AVL tree, ordered by key insert: a standard insert; (log n) find: a standard find (without removing, of course); (log n) remove: a standard remove; (log n) key entry key entry key entry key entry and so on

8 Anything better? So far we have find, remove and insert where time varies between constant logn. It would be nice to have all three as constant time operations!

9 Implementation 6: Hashing
An array in which TableNodes are not stored consecutively Their place of storage is calculated using the key and a hash function Keys and entries are scattered throughout the array. key entry 4 10 hash function array index Key 123

10 Hashing insert: calculate place of storage, insert TableNode; (1)
find: calculate place of storage, retrieve entry; (1) remove: calculate place of storage, set it to null; (1) key entry 4 10 123 All are constant time (1) !

11 Hashing We use an array of some fixed size T to hold the data. T is typically prime. Each key is mapped into some number in the range 0 to T-1 using a hash function, which ideally should be efficient to compute.

12 Example: fruits Suppose our hash function gave us the following values: hashCode("apple") = 5 hashCode("watermelon") = 3 hashCode("grapes") = 8 hashCode("cantaloupe") = 7 hashCode("kiwi") = 0 hashCode("strawberry") = 9 hashCode("mango") = 6 hashCode("banana") = 2 kiwi banana watermelon apple mango cantaloupe grapes strawberry 1 2 3 4 5 6 7 8 9

13 Example Store data in a table array: kiwi banana watermelon apple
table[5] = "apple" table[3] = "watermelon" table[8] = "grapes" table[7] = "cantaloupe" table[0] = "kiwi" table[9] = "strawberry" table[6] = "mango" table[2] = "banana" kiwi banana watermelon apple mango cantaloupe grapes strawberry 1 2 3 4 5 6 7 8 9

14 Example Associative array: kiwi
table["apple"] table["watermelon"] table["grapes"] table["cantaloupe"] table["kiwi"] table["strawberry"] table["mango"] table["banana"] kiwi banana watermelon apple mango cantaloupe grapes strawberry 1 2 3 4 5 6 7 8 9

15 Example Hash Functions
If the keys are strings the hash function is some function of the characters in the strings. One possibility is to simply add the ASCII values of the characters: æ length - 1 ö å h ( str ) = ç str [ i ] ÷ % TableSize ç ÷ è ø i = Example : h ( ABC ) = ( 65 + 66 + 67 )% TableSize

16 Finding the hash function
int hashCode( char* s ) { int i, sum; sum = 0; for(i=0; i < strlen(s); i++ ) sum = sum + s[i]; // ascii value return sum % TABLESIZE; }

17 Example Hash Functions
Another possibility is to convert the string into some number in some arbitrary base b (b also might be a prime number): æ length - 1 ö å h ( str ) = ç str [ i ] b i ÷ % T ç ÷ è ø i = Example : h ( ABC ) = ( 65 b + 66 b 1 + 67 b 2 )% T

18 Example Hash Functions
If the keys are integers then key%T is generally a good hash function, unless the data has some undesirable features. For example, if T = 10 and all keys end in zeros, then key%T = 0 for all keys. In general, to avoid situations like this, T should be a prime number. End of lecture 41. Start of lecture 42.


Download ppt "Skip List: Implementation"

Similar presentations


Ads by Google