给你一个链表的头节点 head
和一个整数 val
,请你删除链表中所有满足 Node.val == val
的节点,并返回 新的头节点 。
# 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]:
dummyhead = ListNode(0, head)
cur = dummyhead
while(cur.next != None):
if(cur.next.val == val):
cur.next = cur.next.next #这个是对指针操作。改变指针。是真正的修改链表结构
else:
cur = cur.next #这个是对节点操作。虽然形式与上一行极像但意义不同。并没有修改链表结构而是只是遍历次序往后移了一位,改变的只是cur这个变量。
return dummyhead.next