删除链表中指定结点
/******************************************************
*
* name : DelTargetNode
* function : 删除链表中指定的结点
* argument
* @head :链表头结点的地址
* @num :需要删除的第num个结点
*
* retval : 成功返回1,失败返回0
* author : Dazz
* date : 2024/4/22
* note : None
*
* *******************************************************/
bool DelTargetNode(LinkList_ *head, unsigned int num)
{
// 错误处理
if (NULL == head)
{
printf("请输入有效地址\n");
return false;
}
// 对头结点做备份
LinkList_t *temp1 = head;
// 对头结点的直接后继做备份
LinkList_t *temp2 = head->next;
// 遍历链表,找到待删除结点和待删除结点的直接前驱
for (int i = num; i > 1; i--)
{
temp1 = temp1->next;
temp2 = temp2->next;
}
// 将待删结点的直接前驱的指针域指向待删除结点的直接后继
temp1->next = temp2->next;
// 将待删结点的指针域指向NULL
temp2->next = NULL;
// 删除待删结点
free(temp2);
temp2 = NULL;
return true;
}
标签:结点,删除,head,next,链表,temp2
From: https://www.cnblogs.com/Dazz24/p/18151571