删除单链表中最小值的结点

/**********************************************
*file name: demo14.c
*author:lyn2736001522@163.com
*date:2024/4/2
*function:设计1个函数,实现删除单链表中最小值的结点
*note:None
*CopyRight (c) 2023-2024 邮箱 All Right Reseverd
***********************************************/
bool LList_DelMin(LList_t *Head)
{
LList_t *min_prev; //记录最小值的直接前驱
LList_t *Phead = Head->next; //记录当前结点的地址
LList_t *Min = Head->next ; //记录最小值结点的地址
LList_t *Phead_prev = Head; //记录当前结点的直接前驱地址
while(Phead->next)//遍历单链表,寻找最小值结点
{
if(Min->data > Phead->next->data)
{
Min = Phead->next;
min_prev = Phead;
}
//把当前结点的直接后继作为新的当前结点
Phead_prev = Phead;
Phead = Phead->next;
}
//删除当前的最小值结点,前提是让最小值结点的直接前驱指向最小值结点的直接后继
min_prev->next = min->next;
min->next = NULL;
free(min);
}

posted @ 2024-04-24 09:03  小楠同志  阅读(4)  评论(0编辑  收藏  举报