python构建一个双向循环列表
时间: 2023-07-01 12:14:08 浏览: 44
以下是Python中双向循环列表的实现示例:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None
class CircularDoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
self.tail = new_node
else:
new_node.prev = self.tail
self.tail.next = new_node
self.tail = new_node
self.tail.next = self.head
self.head.prev = self.tail
def prepend(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
self.tail.next = self.head
self.head.prev = self.tail
def print_list(self):
current = self.head
while current:
print(current.data)
current = current.next
if current == self.head:
break
```
在这个示例中,我们定义了一个 `Node` 类来表示双向链表中的节点,它包含数据,下一个节点和上一个节点的引用。然后,我们定义了一个 `CircularDoublyLinkedList` 类,它包含头节点和尾节点的引用。我们可以使用 `append` 方法在列表末尾添加新节点,使用 `prepend` 方法在列表开头添加新节点,使用 `print_list` 方法打印整个列表。注意,在添加新节点时,我们需要更新节点的前驱和后继指针,以便它们可以相互链接。同时,我们需要将尾节点的下一个指针指向头节点,将头节点的前驱指针指向尾节点,以确保列表是双向循环的。