203. Remove Linked List Elements - cocoder39/coco39_LC GitHub Wiki

203. Remove Linked List Elements

recursion:

ListNode* removeElements(ListNode* head, int val) {
        if (! head) {
            return nullptr;
        }
        
        head->next = removeElements(head->next, val);
        return (head->val == val) ? head->next : head;  
    }

iteration:

ListNode* removeElements(ListNode* head, int val) {
        ListNode dummy(0);
        dummy.next = head;
        
        ListNode* p = &dummy;
        while (p->next) {
           p->next->val == val ? p->next = p->next->next : p = p->next;
        }
        return dummy.next;
    }