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 );
}
}