思路:
基础的链表题,建立一个dummy节点,一个cur指向当前节点用来判断是否等于val的指针,和一个pre指针用来更新删除等于val节点后的链表。
一个while循环,条件是cur不为nullptr即可。
代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* dummy = new ListNode(0,head);
ListNode* cur = head;
ListNode* pre = dummy;
while(cur){
if(cur->val==val){
pre->next = cur->next;
}
else{
pre = pre->next;
}
cur = cur->next;
}
return dummy->next;
}
};