用LinkList设有一个带头结点的单链表L,编写一个算法删除表中所有值为x的结点
时间: 2024-09-24 19:12:38 浏览: 44
在带头结点的单链表`L`中删除所有值为`x`的节点,可以采用迭代的方式遍历链表,并在找到值为`x`的节点时将其前一个节点的指针指向当前节点的下一个节点,从而跳过该节点。这里是一个简单的Python示例:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def remove_elements(head, x):
if head is None or head.val != x: # 如果头节点不存在或者不是目标值
return head
current = head # 初始化当前节点为头节点
while current.next is not None:
if current.next.val == x: # 当前节点的下一个节点是要删除的
current.next = current.next.next # 跳过它
else:
current = current.next # 否则继续向前移动
# 检查最后一个节点是否需要删除
if current.next and current.next.val == x:
current.next = None
return head # 返回新的链表头节点
```
在这个算法中,我们首先检查头节点,如果头节点不是`x`,直接返回。然后从第二个节点开始遍历,遇到值为`x`的节点就删除。最后更新头节点为新的第一个非`x`节点。
阅读全文