1.解题思路
利用快慢指针,如果快指针此时的值为val则将此时满指针的next指向快指针的next利用循环,其次,要特意判断链表的头部为val的情况以及链表为空的情况.
2.代码实现
struct ListNode* removeElements(struct ListNode* head, int val)
{ if(head==NULL)
return NULL;
while(head&&head->val==val)
{
head=head->next;
}
struct ListNode*p=head;
struct ListNode*prev=NULL;
while(p)
{
if(p->val!=val)
{ prev=p;
p=p->next;
}
else
{
prev->next=p->next;
p=p->next;
}
}
return head;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!