实现带头节点单链表的插入、查找以及删除操作
时间: 2024-09-18 16:14:29 浏览: 169
在编程中,实现带头节点的单链表通常涉及以下几个基本操作:
1. **插入(Insertion)**:
- 插入到头部:创建一个新的节点,将新节点的`next`指针指向当前头节点,然后更新头节点的指针,使其指向新节点。
- 插入到指定位置:首先找到插入位置的前一个节点,然后创建新节点并将其`next`指向前一个节点的`next`,最后更新前一个节点的`next`。
2. **查找(Search)**:
- 查找特定值:从头节点开始遍历链表,比较每个节点的值,如果找到匹配就返回该节点,否则直到链表末尾返回`null`表示未找到。
3. **删除(Deletion)**:
- 删除头节点:直接修改头节点的指针,使其指向头节点的下一个节点。
- 删除指定节点:遍历链表寻找目标节点,找到后更新它前面的那个节点的`next`指针,让它跳过被删除的节点。
以下是Python伪代码示例:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = Node()
# 插入操作
def insert_at_head(self, data):
new_node = Node(data)
new_node.next = self.head.next
self.head.next = new_node
def insert_at_position(self, position, data):
if position == 0:
self.insert_at_head(data)
else:
current = self.head.next
for _ in range(position - 1):
if current is not None:
current = current.next
if current is not None:
new_node = Node(data)
new_node.next = current.next
current.next = new_node
# 查找操作
def search(self, target):
current = self.head.next
while current is not None:
if current.data == target:
return current
current = current.next
return None
# 删除操作
def delete_node(self, key):
current = self.head.next
prev = self.head
while current is not None:
if current.data == key:
if prev == current: # 如果待删节点就是头节点
self.head = current.next
else:
prev.next = current.next
break
prev = current
current = current.next
```
阅读全文