上一篇文章:【打卡】——【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;
}
};
为了方便理解,找了个视频