题目:在O(1)时间内删除链表结点
思路:
如果要删除的节点后面有节点,则将该节点内容复制到要删除的节点,并删除该节点。
如果要删除的节点在链表头部,直接删除该节点。
如果要删除的节点在链尾,遍历至该节点删除。
class ListNode(object):
def __init__(self):
self.val = x
self.next = None
def __del__(self):
self.val = None
self.next = None
class Solution(object):
def deleteNode(self,head,delNode):
if not head or not delNode:
return None
#如果要删除的节点在链中
if delNode.next != None:
delNode.val = delNode.next.val
delNode.next = delNode.next.next
delNode.next.__del__()
#如果删除节点就是头节点
elif delNode == head:
head.__del__()
#如果要删除的节点在尾部
else:
node = head
while node != delNode:
node = node.next
node.next = None
delNode.__del__()