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; }
结尾:今天的分享到此结束,喜欢的朋友如果感觉有帮助可以点赞三连支持,咱们共同进步!