Beispiel #1
0
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);
}
Beispiel #2
0
//////////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;
}