带头结点的单链表L,删除一个最小结点的高效算法(假设最小结点是唯一的) -004

带头结点的单链表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; //p指向最小的结点.pre指向最小结点的前驱
LNode *first=p,*second=L; //first second 用于遍历单链表
while(p!=NULL){
if(p->data<first->data){
first=p;
second=pre;
}
second=first;
first=first->next;
}
pre->next=p->next;
delete p;
}

评论