双向链表python
时间: 2024-02-19 16:56:45 浏览: 101
双向链表是一种常见的数据结构,它与向链表相比,每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。这样的设计使得在双向链表中可以方便地进行双向遍历和插入/删除操作。
在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
def append(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
new_node.prev = current
def prepend(self, data):
new_node = Node(data)
if self.head is None:
self.head = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
def delete(self, data):
current = self.head
while current:
if current.data == data:
if current.prev:
current.prev.next = current.next
else:
self.head = current.next
if current.next:
current.next.prev = current.prev
break
current = current.next
def display(self):
current = self.head
while current:
print(current.data, end=" ")
current = current.next
print()
# 示例用法
dll = DoublyLinkedList()
dll.append(1)
dll.append(2)
dll.append(3)
dll.prepend(0)
dll.display() # 输出:0 1 2 3
dll.delete(2)
dll.display() # 输出:0 1 3
```
上述代码中,`Node`类表示链表的节点,包含数据和指向前一个节点和后一个节点的指针。`DoublyLinkedList`类表示双向链表,包含头节点的引用以及一些基本操作方法,如追加、插入和删除等。可以根据需要扩展该类以满足具体的业务需求。
阅读全文