题目:试编写在带头结点的单链表L中删除一个最小值结点的高效算法(假设最小值结点是唯一的)
关键字:带头结点的单链表+最小值删除
思路
删除最小值=1、找到最小值,然后得到最小值指针
2、进行删除操作
1.遍历L,寻找最小值,并随时保存最小值指针
需要变量:L, 遍历工作指针p,最小值指针minp
2.根据最小值指针删除最小值
需要变量:工作指针前驱指针pre,最小值前驱指针minpre
LinkList Delete_Min(LinkList &L){
LNode*pre=L,*p=L->next;
LNode*minpre=pre,*min=p;//最小值指针从第一个结点开始,不包含头结点
while(p!=NULL){
if(p->data<minp->data){
minp=p;
minpre=pre;
}
pre=p;
p=p->next;
}
minpre->next=minp->next;
free(minp);
return L;
}