链表的操作要考虑遍历的方法
移除指针的方法
1.直接使用原来的链表来进行删除操作。
2.设置一个虚拟头结点在进行删除操作。
虚拟头节点的做法
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: ListNode, val: int) -> ListNode:
dummy_head = ListNode(next=head) #添加一个虚拟节点
cur = dummy_head
while(cur.next!=None):
if(cur.next.val == val):
cur.next = cur.next.next #删除cur.next节点
else:
cur = cur.next
return dummy_head.next
current 是用来一步步遍历链表节点
cur.next = cur.next.next #删除cur.next节点 (就对应删除了 dumpy_head nex 中 target 元素的节点)
cur = cur.next 是推进节点向前走 一直走到最后 (这里肯定就不能作为返回值)
dumpy_head next 是指向头节点的
网友评论