leetcode Remove Linked List Elements

来源:互联网 发布:双系统装机软件 编辑:程序博客网 时间:2024/06/06 04:12

原题链接:https://leetcode.com/problems/remove-linked-list-elements/

Description

Remove all elements from a linked list of integers that have value val.

Example
Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5

/** * 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) {        if (!head) return NULL;        ListNode *p = head, *x = NULL;        if (p->val == val) {            while (p->next && p->val == val) {                x = p;                p = x->next;                delete x;            }            head = p;        }        while (p && p->next) {            while (p->next && p->next->val == val) {                x = p->next;                p->next = x->next;                delete x;            }            p = p->next;        }        return (!head->next && head->val == val) ? NULL : head;    }};
0 0