python 删除链表倒数第n个节点
def delete_k_node(self, head, index):
"""
删除链表倒数第k个节点
:param head:
:param index:
:return:
"""
# 虚拟头结点
dummy = Node(-1)
dummy.next = head
# p2指向dummy,p1指向head
p1, p2 = head, dummy
# p1先走index步
for i in range(0, index):
p1 = p1.next
while p1:
# p1和p2一起走
p1 = p1.next
p2 = p2.next
# p1走到末尾的时候。p2当前的位置就是目标位置的前一个,因为它从dummy开始。
# 所以此时修改p2的next的指向到下一个,就可以实现删除的效果
p2.next = p2.next.next
# 最后别忘了去掉虚拟节点
return dummy.next