1.解题思路
利用双指针,开辟一个新的头结点并依次向头结点尾插不为val的结点如果遇到值为val的结点就跳过并释放掉
2.代码实现
struct ListNode* removeElements(struct ListNode* head, int val)
{ if(head==NULL)
return NULL;
struct ListNode* newhead=NULL;
struct ListNode*tail=NULL;
struct ListNode* cur=head;
while(cur)
{
if(cur->val==val)
{
struct ListNode*ps=cur;
cur=cur->next;
free(ps);
ps=NULL;
}
else
{
if(tail==NULL)
{
newhead=cur;
tail=cur;
}
else
{
tail->next=cur;
tail=tail->next;
}
cur=cur->next;
}
}
if(tail!=NULL)
tail->next=NULL;
return newhead;
}
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!