LeetCode: 203. Remove Linked List Elements

题目描述

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

Example:

Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

解题思路

判断当前节点的下一个节点是否是 val, 如果是的话,则删除掉下一个节点。

AC 代码

/** * 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) {

        // 首节点是否是 val
        while(head && head->val == val) head = head->next;
        if(head == nullptr) return nullptr;

        // 下一个节点是否是 val
        ListNode* iterNode = head;
        while(iterNode->next)
        {
            if(iterNode->next->val == val) iterNode->next = iterNode->next->next;
            else iterNode = iterNode->next;
        }

        return head;
    }
};