双向循环链表头插法代码
时间: 2024-09-27 07:02:03 浏览: 10
双向循环链表是一种特殊的链表结构,在这种链表中,每个节点除了包含指向下一个节点的指针外,还包含了指向前一个节点的指针,形成一个首尾相连的环形结构。下面是一个简单的Python示例,展示如何在双向循环链表的头部插入一个新节点:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
self.prev = None
class DoublyCircularLinkedList:
def __init__(self):
self.head = None
def insert_at_head(self, data):
if not self.head:
new_node = Node(data)
new_node.next = new_node
new_node.prev = new_node
self.head = new_node
else:
new_node = Node(data)
current = self.head
new_node.next = current
new_node.prev = current.prev
current.prev.next = new_node
current.prev = new_node
# 示例:创建并插入节点
def create_and_insert(self, data_list):
for data in data_list:
self.insert_at_head(data)
# 使用示例
dll = DoublyCircularLinkedList()
data_list = [1, 2, 3]
dll.create_and_insert(data_list)
```
在这个例子中,`insert_at_head`函数首先检查是否为链表的第一个节点,如果是,则直接设置新旧节点相互连接;否则,创建新节点,并调整当前头节点、新节点和前一个节点之间的指针关系。