查看北大陈斌老师的数算课程模仿写的。迭代遍历。
找到要移除的节点current,需要区分两种情况:current是首个节点;或者是位语链条中间的节点。
思路流程:
step 1:准备两个指针遍历链表,一个指针指向当前要遍历的元素,另一个指针指向该元素的前序节点,便于获取它的指针。第一个节点给它加一个None节点作为前节点。
step 2:遍历链表,找到目标节点就停下,准备处理;如果没找到就继续找。
step 3:如果要删除的是首个节点,特殊处理一下;如果是中间节点,则断开连接,指向后一个。
step 4:返回时返回原来输入的链表即可。(本来有点小疑惑为什么返回的是head,后面理解了是因为一开始用head记录了要返回的结果的表头。)
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param val int整型
# @return ListNode类
#
class Solution:
def deleteNode(self , head: ListNode, val: int) -> ListNode:
current=head
previous=None
found= False
while not found:
if current.val ==val:
found=True
else:
previous=current
current=current.next
if previous==None:#要移除的节点current就是表头节点时
head=current.next
else:
previous.next=current.next
return head