试编写在带头结点的单链表1中删除一个最小值结点的高效算法(假设最小值结点是唯一的)

#include"initList/initList.h"

#include"initList/initList.h"
LinkList* del_min(LinkList* L){
    LinkList* pre;//前驱节点
    LinkList* p;//工作节点
    LinkList* minpre;//最小值前驱节点
    LinkList* min;//最小值节点
    pre = L,minpre = pre;
    p = L->next,min = p;
    if(p==NULL)
        return 0;
    while(p!=NULL){
        if(p->datadata){  //如果当前节点小于最小值,min,minpre移动到当前位置
            minpre = pre;
            min = p;
        }else{
            p = p->next;
            pre = pre->next;
        }
    }
    //删除min节点
    minpre->next = min->next;
    free(min);
    return L;
}

int main(){
    LinkList* L = initRandomList();
    cout<<"删除前:"<

 

结果如图:

试编写在带头结点的单链表1中删除一个最小值结点的高效算法(假设最小值结点是唯一的)_第1张图片

你可能感兴趣的:(A研)