写出一个通用的算法,删除链表中值的相同的节点烦人代码
时间: 2024-11-03 18:14:02 浏览: 18
cpp代码-在链表中找到第一个含有某值的结点并删除该结点
创建一个通用算法来删除链表中值相同的节点通常涉及到迭代或递归,这取决于链表的具体情况。下面是一个基于迭代的通用算法示例,它适用于单向链表:
```python
class Node:
def __init__(self, value=None, next=None):
self.value = value
self.next = next
def delete_duplicates(head):
if head is None:
return head
current = head
prev = None # 用于记录前一个节点
while current is not None:
next_temp = current.next # 预备保存下一个节点
# 检查当前节点是否等于下一个节点
if current.value == next_temp.value:
# 如果当前节点是头节点,直接删除
if prev is None:
head = next_temp
else:
prev.next = next_temp
else:
# 否则,更新prev和current指针
prev = current
current = next_temp
return head
```
这个函数首先初始化`prev`为空,因为需要处理头节点可能是重复的情况。然后在循环中,每次比较当前节点和其后一个节点的值,如果它们相等,则更新`prev.next`指向`next_temp`之后的节点;如果不相等,`prev`和`current`都向前移动。
阅读全文