- 删除单链表L(有头结点)中的一个最小值结点。
/***********************************************************
*
* file name:
* author : [email protected]
* date : 2024/04/23
* function :
* note : None
*
* CopyRight (c) 2023-2024 [email protected] All Right Reseverd
*
* ***********************************************************/
/***********************************************************
*
* 函数名称: LList_DelMin
* 函数功能: 删除单链表L(有头结点)中的一个最小值结点。
* 函数参数:
*
*
* 返回结果:
* 注意事项: None
* 函数作者: [email protected]
* 创建日期: 2024/04/23
* 修改历史:
* 函数版本: V1.0
* ***********************************************************/
void LList_DelMin(LList_t *Head) // L是单链表,含头节点 头节点->首节点
{
LList_t *min_prev; // 记录最小值结点的直接前驱地址
LList_t *min = Head->next; // 记录最小值结点的地址
LList_t *phead = Head->next; // 记录当前结点的地址
LList_t *phead_prev = Head; // p是要进行遍历的指针,pre是p前驱指针
// 遍历链表,目的是找到最小值结点
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所指结点也就是删除操作
min->next = NULL;
free(min);
}
标签:结点,prev,min,next,LList,phead,DelMin
From: https://www.cnblogs.com/xiaoyaoj/p/18153846