用单向链表实现增删改查
时间: 2023-06-24 21:04:24 浏览: 112
单向链表是由若干个节点组成的,每个节点都包含一个数据域和一个指向下一个节点的指针域。在单向链表中,只能从头节点开始遍历链表,每个节点只能访问其后继节点。下面是用单向链表实现增删改查的代码实现:
```python
# 定义单向链表节点类
class ListNode:
def __init__(self, val):
self.val = val
self.next = None
# 定义单向链表类
class LinkedList:
def __init__(self):
self.head = None
# 添加节点
def add_node(self, val):
new_node = ListNode(val)
if not self.head:
self.head = new_node
else:
curr = self.head
while curr.next:
curr = curr.next
curr.next = new_node
# 删除节点
def delete_node(self, val):
if not self.head:
return
if self.head.val == val:
self.head = self.head.next
else:
curr = self.head
while curr.next:
if curr.next.val == val:
curr.next = curr.next.next
return
curr = curr.next
# 修改节点
def update_node(self, old_val, new_val):
curr = self.head
while curr:
if curr.val == old_val:
curr.val = new_val
return
curr = curr.next
# 查找节点
def search_node(self, val):
curr = self.head
while curr:
if curr.val == val:
return True
curr = curr.next
return False
```
在上面的代码中,我们定义了一个单向链表节点类 ListNode ,包含一个数据域 val 和一个指向下一个节点的指针域 next 。然后定义了单向链表类 LinkedList ,包含一个头节点 head 。在 LinkedList 中,我们实现了 add_node() 方法用于添加节点,delete_node() 方法用于删除节点,update_node() 方法用于修改节点,search_node() 方法用于查找节点。
阅读全文