/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeElements(ListNode* head, int val) { ListNode* helper = new ListNode(-1); helper->next = head; auto curr = helper; while(curr->next) { while(curr->next && curr->next->val != val) curr = curr->next; if(!curr->next)break; auto tmp = curr->next; curr->next = tmp->next; tmp->next = nullptr; } return helper->next; } };