🌈 个人主页:白子寰
🔥 分类专栏:python从入门到精通,魔法指针,进阶C++,C语言,C语言题集,C语言实现游戏👈 希望得到您的订阅和支持~
💡 坚持创作博文(平均质量分82+),分享更多关于深度学习、C/C++,python领域的优质内容!(希望得到您的关注~)
目录
题目要求
示例
解法一:双指针
思路
图解
①pcur = val且是phead=val
②链表中元素 != val
③(除首元素之外的元素)其他元素=val
代码
解法二:尾插不是val的元素到新链表
思路
图解
代码

【力扣】-- 移除链表元素
移除链表元素 https://leetcode.cn/problems/remove-linked-list-elements/
https://leetcode.cn/problems/remove-linked-list-elements/
题目要求
给你一个链表的头节点
head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回 新的头节点 。
示例
 
 
解法一:双指针
思路
创建两个指针 pcur 和 prev , pcur=head, prev为空指针,使用while语句 pcur 遍历链表,有以下三种情况👇,最后返回新的节点head
图解
①pcur = val且是phead=val

②链表中元素 != val
 
③(除首元素之外的元素)其他元素=val
 
 
代码
typedef struct ListNode LTNode;
struct ListNode* removeElements(struct ListNode* head, int val) 
{
    LTNode* prev = NULL,*pcur = head;
    while(pcur)
    {
        //首元素=val
        if(pcur->val == val)
        {
          if(pcur == head)
          {
            head = pcur->next;
            free(pcur);
            pcur = head;
          }
          //其他元素=val
          else
          {
            prev->next =pcur->next;
            free(pcur);
            pcur = prev->next;
          }
        }
        //链表元素 != val
        else
        {
            prev = pcur;
            pcur = pcur->next;
        }
    }
    return head;
}
解法二:尾插不是val的元素到新链表
思路
新创建两个指针 newhead 和 newtail, 并初始化为NULL;
在while循环下用pcur遍历原链表
在pcur->val!=val的情况下
①newhead != NULL
②newhead==NULL
如下图👇
最后结尾newtail的下一个节点置为空
图解

代码
typedef struct ListNode LTNode;
struct ListNode* removeElements(struct ListNode* head, int val) {
    LTNode* newhead,*newtail;
    newhead = newtail = NULL;
    LTNode* pcur = head;
    while(pcur)
    {
        if(pcur->val != val)
        {
            if(newhead == NULL)
            {
                newhead = newtail = pcur;
            }
            else
            {
                newtail->next = pcur;
                newtail = newtail->next; 
            }
        }
        pcur = pcur->next;
    }
    if(newtail)
    {
        newtail->next = NULL;
    }
    return newhead;
}
***********************************************************分割线*****************************************************************************
完结!!!
感谢浏览和阅读。
等等等等一下,分享最近喜欢的一句话:“保持热爱,奔赴下一场山海”。
我是白子寰,如果你喜欢我的作品,不妨你留个点赞+关注让我知道你曾来过。
你的点赞和关注是我持续写作的动力!!!
好了划走吧。



















