链表的删除操作
题目:设计一个算法删除单链表L(有头结点)中的一个最小值结点。
/*******************************************
* name : DelNode
* function :删除单链表L中的一个最小值结点
* argument : @L:单链表L的地址
* retval : None
* date :2024/04/22
* note :Note
********************************************/
void DelNode(*L)
{
// 链表为空无法删除最小值结点
if (L->next == NULL) {
printf("Cannot delete min value node from single-node list.\n");
return;
}
LinkList *inc = L->next; //递增结点
LinkList *minNode = NULL; //最小结点前一个的地址
LinkList *minNode_front = NULL; //最小结点地址
DataType min = inc->data; //最小值
while(inc){
if(min < inc->next->data){
min = inc->data;
minNode_front = inc;
minNode = inc->next;
}
inc = inc->next;
}
//删除最小结点
minNode_front->next = minNode->next;
minNode->next = NULL;
//释放空间
free(minNode);
return;
}
标签:结点,NULL,inc,next,链表,操作,例题,minNode From: https://www.cnblogs.com/Mr--Song/p/18151591