删除链表中最小的值

image
设计一个算法删除单链表L(有头结点),中的一个最小值结点

/**************************************************
*
*函数名称: LList_DelMin
*函数功能: 删除单链表中最小值结点
*函数参数:
     @SeqList *Head  :头结点的地址
     @  :
*返回结果:
*注意事项: None
*函数作者: 18975491291@163.com
*创建日期: 2024/04/22
*修改历史:
*函数版本: V1.0
**************************************************/



//删除单链表中最小值结点
void LList_DelMin(LList_t *Head)
{
	LList t min_prev;			//记录最小值结点的直接前驱地址
	LList_t min = Head->next;	//记录最小值结点的地址
	LList_t phead = Head->next;	//记录当前结点的地址
	LList_t phead_prev = Head	//记录当前结点的直接前驱地址
        
	//1,编历链表,目的是找到最小值结点
	while(phead->next)
    {
		//比较链表中结点的数据域的大小
		if (min->data > phead->next->data)
		{
			min = phead->next;
			min_prev = phead;
        }
			//如果发现当前结点数据域不大于当前结点的直接后继,则向后逼历
			phead_prev = phead;
			phead = phead->next;
    }
	//2,删除当前的最小值结点,前提是让最小值结点的直接前驱指向最小值结点的直接后继
	min_prev->next = min->next;
	//3.释放最小值结点的内存
	min->next = NULL;
	free(min);
}
posted @ 2024-04-22 21:59  小懿同学  阅读(14)  评论(0)    收藏  举报