已知一个不带头结点的单链表head,结点结构位Node。写出一个同样的算法,删除链表中值相同的结点
时间: 2024-11-03 20:14:10 浏览: 18
试写出一个计算单链表中结点个数的算法,其中指针p指向该链表的第一个结点。
为了删除给定单链表中值相同的节点,可以遍历整个链表,并将当前节点与其后面的节点逐个比较,如果发现有连续两个节点值相等,则只保留第一个节点,跳过第二个。以下是Python的一个示例实现:
```python
class Node:
def __init__(self, value=None):
self.value = value
self.next = None
def delete_duplicates(head):
if head is None or head.next is None:
return head
current = head
while current.next is not None:
if current.value == current.next.value:
# 删除当前节点的下一个节点
next_node = current.next.next
current.next = next_node
else:
# 更新当前节点为下一个节点,继续检查
current = current.next
return head
```
这个函数会遍历链表,遇到值相同的节点就将其从链表中删除。注意,这里假设`value`字段是唯一的标识符,如果链表中有多个连续的相同值,函数只会删除第一个。
阅读全文