双向链表 定位 删除 python
时间: 2023-06-02 14:02:00 浏览: 94
链表的删除
双向链表是一种数据结构,它允许在链表中沿着两个方向遍历。每个节点都包含一个指向前一个节点和后一个节点的指针。在 Python 中,双向链表可以使用类来实现。
以下是一个简单的双向链表类的实现:
```python
class Node:
def __init__(self, value):
self.value = value
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def add(self, value):
new_node = Node(value)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
new_node.prev = self.tail
self.tail.next = new_node
self.tail = new_node
def remove(self, value):
current_node = self.head
while current_node is not None:
if current_node.value == value:
if current_node.prev is not None:
current_node.prev.next = current_node.next
else:
self.head = current_node.next
if current_node.next is not None:
current_node.next.prev = current_node.prev
else:
self.tail = current_node.prev
return
current_node = current_node.next
```
在上面的代码中,我们定义了一个 `Node` 类来表示链表中的每个节点。它包含一个 `value` 属性和两个指针 `prev` 和 `next`,分别指向前一个节点和后一个节点。
我们还定义了一个 `DoublyLinkedList` 类来表示整个双向链表。它包含一个 `head` 属性和一个 `tail` 属性,分别指向链表的第一个节点和最后一个节点。
我们实现了两个方法 `add` 和 `remove`,分别用于向链表中添加一个新节点和从链表中删除一个节点。在 `add` 方法中,我们创建一个新节点并将其添加到链表的末尾。在 `remove` 方法中,我们遍历整个链表,查找要删除的节点。一旦找到该节点,我们更新其前一个节点和后一个节点的指针,以便将其从链表中移除。
使用这个类,我们可以轻松地创建和操作双向链表。例如,以下代码创建一个双向链表并向其中添加一些节点:
```python
lst = DoublyLinkedList()
lst.add(1)
lst.add(2)
lst.add(3)
```
我们还可以使用 `remove` 方法从链表中删除一个节点:
```python
lst.remove(2)
```
这将从链表中删除值为 2 的节点。
阅读全文