/*
* ==============================================================
* File name: delete_min_node.c
* Author: 3360652783@qq.com
* Date created: 2026-07-22
* Description: Delete the node with the minimum value in a singly linked list with head node.
* Copyright notice: All right Reserved
* ==============================================================
*/
//构建删除最小值结点的算法
void LinkList_DelMin(*L){
LinkList *p0 = L; //p0记录最小值前一个结点
LinkList *P1 = L; //p1记录最小值
LinkList *p2 = L->next; //p2用于遍历链表
while( p2->next != NULL ){ //遍历链表的过程中将最小值赋给p1
if( p1->data > p2->data ){
p1 = p2;
p2 = p2->next;
}
else{
p2 = p2->next;
}
}
p1 = ( p1->data < p2->data)?( p1->data ):( p2->data ); //判断链表最后一个值是否为最小值
while( p0->next != p1 ){
p0 = p0->next;
}
p0->next = p1->next; //删除最小值并释放空间
p1->next = NULL;
free(p1);
}