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 |
若当前指针已经指向最后一个结点,它没有后继,因此不能进行删除。 |