带头结点的单链表L,删除一个最小结点的高效算法(假设最小结点是唯一的)
总结
遍历指针,使用两个first,second(使用两个分别定位p,pre)
最小值删除指针,使用两个p,pre
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> using namespace std; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList;
void Del_min(LinkList &L){ LNode *p=L->next,*pre=L; LNode *first=p,*second=L; while(p!=NULL){ if(p->data<first->data){ first=p; second=pre; } second=first; first=first->next; } pre->next=p->next; delete p; }
|