给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。
返回删除后的链表的头节点。
解题思路:
1.如果给定的值在头指针,即要删除第一个节点,此时第二个节点为链表的头结点,那么直接返回第二个节点即可。
2.给定的值val不在头指针上,要删除节点,找该节点的前驱,使它的前驱指向它后面的节点,即是删除该节点。
struct ListNode* deleteNode(struct ListNode* head, int val){
if (head->val==val)
{
return head->next;
}
struct ListNode *p;
for (p=head;p!=NULL;p=p->next)
{
if (p->next->val==val)
{
break;
}
}
struct ListNode *q=p->next;
p->next=q->next;
free(q);
return head;
}
剑指 Offer 18. 删除链表的节点
最新推荐文章于 2024-06-21 18:00:16 发布