📅  最后修改于: 2023-12-03 15:22:42.925000             🧑  作者: Mango
在双向链表上删除节点涉及到修改前驱指针和后继指针的操作,因此需要考虑以下几种情况:
具体实现的细节与语言有关,下面我们以 Python 语言为例进行介绍。
首先我们需要定义双向链表的数据结构:
class Node:
def __init__(self, val):
self.val = val
self.next = None
self.prev = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
然后我们实现一个 delete
方法用于删除指定节点:
class DoublyLinkedList:
# ...
def delete(self, node):
if node == self.head:
self.head = node.next
if node == self.tail:
self.tail = node.prev
if node.prev:
node.prev.next = node.next
if node.next:
node.next.prev = node.prev
node.next = None
node.prev = None
该方法分别处理了待删除节点为头节点和尾节点的情况,然后通过修改前驱和后继节点的指针来从双向链表中删除该节点。
使用示例:
# 创建一个双向链表
dll = DoublyLinkedList()
# 添加四个节点
n1 = Node(1)
n2 = Node(2)
n3 = Node(3)
n4 = Node(4)
dll.head = n1
n1.next = n2
n2.prev = n1
n2.next = n3
n3.prev = n2
n3.next = n4
n4.prev = n3
dll.tail = n4
# 删除中间节点
dll.delete(n3)
# 打印链表中的所有节点
node = dll.head
while node:
print(node.val)
node = node.next
输出结果:
1
2
4
以上就是如何在 Python 中删除双向链表中的节点。