【打卡】——【LeetCode学习计划】《数据结构入门-C++》第7天 链表 补充

上一篇文章:【打卡】——【LeetCode学习计划】《数据结构入门-C++》第7天 链表_heart_6662的博客-CSDN博客

原文链接:【LeetCode学习计划】《数据结构入门-C++》第7天 链表_Wang_Xin_Ling的博客-CSDN博客

203. 移除链表元素
LeetCode: 203. 移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

方法1:迭代

本体就是正常的遍历链表并删除结点。本题中链表为单向链表,因此我们需要记录当前结点的前一个结点,像双指针一样,每次两个指针均往后走一步进行遍历。

class Solution
{
public:
    ListNode *removeElements(ListNode *head, int val)
    {
        ListNode dummy{0, head};
        ListNode *parent = &dummy, *p = parent->next;

        while (p)
        {
            if (p->val == val)
            {
                ListNode *target = p;
                parent->next = p->next;
                p = parent->next;
                delete target;
            }
            else
            {
                parent = p;
                p = p->next;
            }
        }
        return dummy.next;
    }
};

 为了方便理解,找了个视频

 

猜你喜欢

转载自blog.csdn.net/qq_62932195/article/details/121929927