2. 建立双向链表,并在双向链表上实现插入、删除和查找操作(设计性内容)。
时间: 2024-05-13 17:17:48 浏览: 77
双向链表是一种常见的数据结构,它与单向链表相比,可以更方便地在链表中进行前后移动。以下是一个简单的双向链表的实现,包括插入、删除和查找操作:
```python
class Node:
def __init__(self, value):
self.value = value
self.prev = None
self.next = None
class DoublyLinkedList:
def __init__(self):
self.head = None
def insert(self, value):
new_node = Node(value)
if self.head is None:
self.head = new_node
else:
current = self.head
while current.next is not None:
current = current.next
current.next = new_node
new_node.prev = current
def delete(self, value):
if self.head is None:
return
elif self.head.value == value:
self.head = self.head.next
self.head.prev = None
else:
current = self.head
while current is not None and current.value != value:
current = current.next
if current is None:
return
else:
current.prev.next = current.next
if current.next is not None:
current.next.prev = current.prev
def search(self, value):
current = self.head
while current is not None and current.value != value:
current = current.next
return current
```
这个双向链表的实现是基于节点的,每个节点有一个值和两个指针,分别指向前一个节点和后一个节点。在插入操作中,先创建一个新的节点,然后遍历链表,找到最后一个节点,将其next指针指向新节点,将新节点的prev指针指向原链表的最后一个节点。在删除操作中,先找到要删除的节点,然后将其前一个节点的next指针指向其后一个节点,将其后一个节点的prev指针指向其前一个节点。在查找操作中,遍历链表,找到第一个值等于给定值的节点,返回该节点。