力扣-203. 移除链表元素

struct ListNode* removeElements(struct ListNode* head, int val) 
{
    struct ListNode *prev = NULL , *cur = head;

    while(cur)
    {
        if(cur->val == val)
        {
            /*删除节点*/
            if(cur == head)/*头删*/
            {
                head = cur->next;
                free(cur);

                cur = head;
            }
            else
            {
                prev->next = cur->next;
                free(cur);
                cur = prev->next;
            }
        }
        else
        {
            prev = cur;
            cur = cur->next;
        }
    }

    return head;
}

注意:

要特别注意,如果删除的是第一个元素时,相当于头删,要特别去判一下。否则prev为NULL直接去接引用next是会程序崩溃的,

你可能感兴趣的:(LeetCode,leetcode)