实现一个双向链表
时间: 2023-07-10 19:07:09 浏览: 107
好的,下面是一个简单的双向链表的实现,包括节点的添加、删除和打印:
```python
class Node:
def __init__(self, value):
self.value = value
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def add(self, value):
node = Node(value)
if not self.head:
self.head = node
else:
current = self.head
while current.next:
current = current.next
current.next = node
node.prev = current
def remove(self, value):
if not self.head:
return
if self.head.value == value:
self.head = self.head.next
self.head.prev = None
return
current = self.head
while current.next:
if current.next.value == value:
current.next = current.next.next
if current.next:
current.next.prev = current
return
current = current.next
def print_list(self):
current = self.head
while current:
print(current.value)
current = current.next
```
这个双向链表的实现中,`Node` 类代表链表中的节点,包括节点的值、前驱节点和后继节点。`DoublyLinkedList` 类代表整个双向链表,包括链表头节点。在 `add` 方法中,我们创建一个新节点,并将其添加到链表的尾部。在 `remove` 方法中,我们查找要删除的节点,并将其从链表中删除。在 `print_list` 方法中,我们按顺序打印链表中的所有节点的值。