# 思路1:从头遍历找到要删除节点的上一个节点,然后把上一个节点的pNext指向要删除节点的下一个节点
# 思路2:将要删除节点的下一个节点内容复制并覆盖到要删除的节点,之后在把要删除节点的pNext指向下下一个节点
class ListNode(object):
def __init__(self,x):
self.val=x
self.next=None
def del_link(head,delNode):
if head is None or delNode is None:
return
# 只有一个节点
if head == delNode:
head = None
return
#链表有多个节点,要删除的是尾节点
elif delNode.next is None:
new_node = head
#找到要删除结点的上一个结点,将它的指针指向空,表示删除了最后一个结点
while new_node.next != delNode:
new_node = new_node.next
new_node.next = None
return
#删除中间节点
else:
del_nextNode = delNode.next
delNode.val = del_nextNode.val
delNode.next = del_nextNode.next
del_nextNode = None
return
node1 = ListNode(1)
node1.next = ListNode(2)
node1.next.next = ListNode(3)
node1.next.next.next = ListNode(4)
node1.next.next.next.next = ListNode(5)
print(del_link(node1,node1.next))
给定链表的头指针和一个节点指针,在O(1)时间删除链接节点--python
最新推荐文章于 2021-08-12 09:38:46 发布