LeetCode | 203. 移除链表元素

LeetCode | 203. 移除链表元素

OJ链接

LeetCode | 203. 移除链表元素_第1张图片

  • 思路:
    LeetCode | 203. 移除链表元素_第2张图片

  • 当cur不等于6就一直找,找到了6就删除,但是能不能直接删除?不能,直接free了就找不到下一个了

  • 这个时候我们就要定义next指针,和prev指针,next指针保存cur的下一个地址,prev保存cur的前一个地址

代码如下:


struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode* prev = NULL;
    struct ListNode* cur=head;
    while(cur != NULL)
    {
        if(cur->val == val)
        {
            struct ListNode* next = cur->next;
            free(cur);
            if(prev)
                prev->next = next;
            else
                head = next;
            cur = next;
        }
        else
        {
            prev = cur;
            cur = cur->next;
        }
    }
    return head;
}

你可能感兴趣的:(LeetCode,leetcode,链表,算法)