Value SkipList::search(const Key searchKey, int iterator_flag) { int i; SkipListElement* element; SkipListElement* nextElement; element = myHeader; for(i=myHeader->getLevel(); i>=0; i--) { nextElement = element->getElement(i); while( (nextElement != NIL) && (nextElement->getKey() < searchKey) ) { element=nextElement; nextElement = element->getElement(i); } } element=element->getElement(0); // key is < searchKey // if key exists return value else ERROR if( (element != NIL) && (element->getKey() == searchKey) ) { if (iterator_flag > 0){ iter = element; } return(element->getValue()); } else return(SKIPLIST_NOT_FOUND); }
//////////ITERATOR///////////////////////////////////////////////////////////// // see the .h file /////////////////////////////////////////////////////////////////////////////// void SkipList::list(ostream & os) { os << "List ing start *****************************************" << endl; SkipListElement* element; SkipListElement* nextElement; element = myHeader; nextElement = element->getElement(0); while( (nextElement != NIL) ) { os << setw(20) << nextElement->getKey() << " " << setw(4) << nextElement->getValue() << " " << endl; element=nextElement; nextElement = element->getElement(0); } os << "List end ***********************************************" << endl; return; }