Listing 4: Skiplist search function
template <class DATA, class KEY> DATA * Skiplist<DATA,KEY>::find( const KEY &key ) { int i; SLPosition<DATA,KEY> *cur = &head; for( i = level - 1; i >= 0; i-- ) { while( cur->forward[i] != NULL && cur->forward[i]->key < key ) { cur = cur->forward[i]; } } cur = cur->forward[0]; if( cur != NULL && cur->key == key ) { return( cur->data ); } else { return (NULL ); } }