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

输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
思路
解法一:
解题关键:若使用 cur 表示当前节点,则删除下一个节点方法:cur.next = cur.next.next
解题思路:
- 使用假节点 dumpyNode 指向head,这样可避免对 head 删除再判断的特殊情况。
- 使用 cur 指向 dumpyNode, 当 cur 的下一个节点不为空循环
- 若节点的值等于 val, 则删除节点;
- cur 移动到下一节点
class Solution
{
public:
ListNode *removeElements(ListNode *head, int val)
{
ListNode* dumpyNode = new ListNode(0, head);
ListNode* cur = dumpyNode;
while(cur->next != nullptr) {
if (cur->next->val == val) {
cur->next = cur->next->next;
}else {
cur = cur->next;
}
}
return dumpyNode->next;
}
};