题目链接:https://leetcode.cn/problems/remove-linked-list-elements/
核心思想:虚拟头节点
链表删除过程

链表1 4 2 4 ,移除元素4
就把元素4的上一个节点的下一个节点 指向 元素4节点的下一个节点
问题在于:如果头节点的元素正好是4,就没有上一个节点操作指向下一个节点
所以引入虚拟头节点
#
# @lc app=leetcode.cn id=203 lang=python3
#
# [203] 移除链表元素
#
# @lc code=start
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
# 在原来的头节点前面,创建一个虚拟头节点,下一个节点指向原来的头节点,完成连接
dummy_head = ListNode(next=head)
current = dummy_head
while current.next:
if current.next.val == val:
current.next = current.next.next
else:
# 移动到下一个节点
current = current.next
return dummy_head.next
# @lc code=end