设有一个不带头结点的单链表,表中元素值均不相同 试编写一个算法删除该单链表中元素值为x的数据元素,若删除成功则返回ture,否则返回false
时间: 2024-12-23 22:12:35 浏览: 13
删除一个给定值x的元素从单链表中,可以按照以下步骤编写算法:
1. 定义一个辅助函数`is_empty()`检查链表是否为空,如果空则直接返回false。
2. 定义一个指针`prev`初始化为`None`,用于存储当前节点的前驱节点(在头节点之前没有前驱)。
3. 遍历链表,如果找到值为x的节点:
a. 将`prev`的`next`指向当前节点的下一个节点,即将当前节点从链表中移除。
b. 更新`prev`为`current`,因为已经找到了目标节点。
4. 如果遍历完整个链表都没有找到值为x的节点,则说明链表中不存在这个元素,返回false。
伪代码如下:
```
def delete_node(head, x):
if is_empty(head): return False
prev = None
current = head
while current is not None and current.data != x:
prev = current
current = current.next
if current is None: # 没有找到值为x的节点
return False
else:
if prev is None: # 删除的是头节点
head = current.next
else:
prev.next = current.next
return True
```
阅读全文