python双链表的代码
时间: 2023-03-19 10:23:16 浏览: 148
双向链表代码
以下是一个Python实现的双向链表的基本代码:
```python
class Node:
def __init__(self, data):
self.data = data
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
self.tail = None
def append(self, data):
new_node = Node(data)
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 prepend(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
self.tail = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
def delete(self, data):
current_node = self.head
while current_node is not None:
if current_node.data == data:
if current_node == self.head:
self.head = current_node.next
self.head.prev = None
elif current_node == self.tail:
self.tail = current_node.prev
self.tail.next = None
else:
current_node.prev.next = current_node.next
current_node.next.prev = current_node.prev
return
current_node = current_node.next
def print_list(self):
current_node = self.head
while current_node is not None:
print(current_node.data)
current_node = current_node.next
```
上述代码中,`Node`类表示链表的节点,具有一个`data`属性表示节点的值,以及`prev`和`next`属性表示前一个节点和后一个节点。`DoublyLinkedList`类表示整个双向链表,具有`head`和`tail`属性表示链表的头部和尾部。链表的基本操作包括`append`(在链表末尾添加一个节点)、`prepend`(在链表头部添加一个节点)和`delete`(删除特定值的节点)。`print_list`方法用于打印整个链表。
阅读全文