编写代码,移除未排序链表中的重复节点。保留最开始出现的节点
时间: 2024-09-27 13:05:34 浏览: 2
在编写代码以移除未排序链表中的重复节点并保留最先出现的节点时,你可以采用迭代的方式来实现,这通常涉及到遍历链表并维护两个指针。这里有一个简单的Python示例:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def remove_duplicates(head):
if not head or not head.next:
return head
current = head
while current.next:
if current.next.val == current.val:
runner = current.next
while runner.next and runner.next.val == runner.val:
runner = runner.next
current.next = runner.next
else:
current = current.next
return head
```
在这个例子中,我们首先检查头节点是否存在或是否有下一个节点。然后设置`current`指针指向头节点,并进入一个循环。在循环里,如果当前节点的下一个节点值等于当前节点值,我们就找到一个重复部分,然后用`runner`指针寻找该序列的结束,即第一个非重复节点。最后,我们将`current`的`next`指向这个非重复节点。
如果下一次`current.next`的值不同于当前节点,说明没有重复,我们就简单地将`current`向后移动一位。当循环结束后,原始链表中的重复节点已被删除,返回的就是新的链表头部。