2.5.1 有序链表类型

算法
  bool LocateElem ( OrderedLinkList L, ElemType e,
           int
( *compare )( ElemType, ElemType ) )
 {
 
// 若有序链表L中存在和e相同的数据元素,则当前指针指向第1个
 // 和e相同的结点,并返回 TRUE,
 // 否则当前指针指向第一个大于e 的元素的前驱,并返回FALSE。
  L.current = L.head; L.curPos = 0;
  while ( L.current -> next &&
          compare( e,L.current -> next -> data )> 0 )
  {
   L.current = L.current -> next;  // 指针后移,继续查询
   L.curPos ++;
  }
 


  compare(ElemType,ElemType)函数的定义为:前一个元素"大于"、"等于"或"小于"后一个元素时分别返回1,0或-1。
 
    if ( L.current -> next &&
          compare( e,L.current -> next -> data ) == 0 )
  {                  // 查到和 e 相同元素,当前指针后移
   L.current = L.current -> next; L.curPos ++;
   return TRUE;
  }
  else return FALSE;        // 当前指针所指后继元素大于 e
 } // LocateElem
    找到和 e 相同的元素时,当前指针应该指向该结点,所以要移动当前指针到该元素结点,而没有找到时,应该指向"插入位置",所以不需要再移动指针了。