2.5.1 有序链表类型

算法
  void InsAfter ( LinkList &L, SLink s )
 {
  
// 在有序链表L中当前指针所指结点之后插入一个新的结点 *s,
  // 并移动当前指针指向新插入的结点。
  L.curPtr -> next = s;
  if ( L.tail == L.curPtr )
   L.tail = s;       // 若新结点插入在尾结点之后,则修改尾指针
  L.curPtr = s; ++L.curPos; // 移动当前指针
  ++L.length;        // 表长增 1
 }
 

 



  插入之前,当前指针在表中任何位置都是合法的。
 
  算法
  
bool DelAfter( LinkList &L, ElemType& e )
 {
 // 若当前指针所指非单链表L中最后一个结点,
 // 则删除当前指针所指结点之后的结点,以 e 带回它的数据元素
 // 并返回 TRUE,否则不进行删除操作且返回 FALSE。

  if ( L.curPtr == L.tail )
   return FALSE;
  p = L.curPtr -> next; e = p -> data;
  L.curPtr -> next = p -> next;       // 修改当前结点的指针
  if ( L.tail == p )
   L.tail = L.curPtr;           // 删除尾结点时修改尾指针
  delete p;                // 释放被删结点
  --L.length;               // 表长减1
  return TRUE;
 } // DelAfter
 








  若当前指针已经指向最后一个结点,它没有后继,因此不能进行删除。