写一个程序,要求体现双链表的使用
时间: 2024-09-23 07:06:41 浏览: 8
当然可以。双链表是一种数据结构,每个节点包含两个指针,一个指向前一个节点,另一个指向后一个节点。下面是一个简单的Python实现,创建了一个Node类和一个DoubleLinkedList类:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.prev = None
self.next = None
class DoubleLinkedList:
def __init__(self):
self.head = None
# 插入节点到列表头部
def insert_at_head(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
else:
new_node.next = self.head
self.head.prev = new_node
self.head = new_node
# 插入节点到列表尾部
def append(self, data):
new_node = Node(data)
if not self.head:
self.head = new_node
else:
current = self.head
while current.next:
current = current.next
current.next = new_node
new_node.prev = current
# 删除指定节点
def delete_node(self, key):
current = self.head
if current and current.data == key:
self.head = current.next
if self.head:
self.head.prev = None
return
previous = None
while current and current.data != key:
previous = current
current = current.next
if current is None:
return
previous.next = current.next
if current.next:
current.next.prev = previous
# 使用示例
dll = DoubleLinkedList()
dll.insert_at_head(1)
dll.append(2)
dll.insert_at_head(0)
print("Before deletion:")
current = dll.head
while current:
print(current.data, end=" <-> ")
current = current.next
# 删除值为1的节点
dll.delete_node(1)
print("\nAfter deletion:")
current = dll.head
while current:
print(current.data, end=" <-> ")
current = current.next
```
这个程序实现了基本的双链表操作,如插入、删除和遍历。你可以根据需要扩展它,例如添加搜索功能。