写出代码在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留。例如,链表1->2->3->3->4->4->5处理后为1->2->3->4->5
时间: 2024-05-04 07:15:38 浏览: 90
好的,这是一个经典的链表问题,以下是删除重复结点的代码实现:
```python
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def deleteDuplication(self, head: ListNode) -> ListNode:
# 头结点为空或只有一个结点,直接返回
if not head or not head.next:
return head
# 创建一个虚拟头结点
dummy = ListNode(-1)
dummy.next = head
# 定义两个指针,一个指向前面的结点,一个指向当前结点
pre = dummy
cur = head
# 遍历链表
while cur:
# 当前结点的值与后面的结点值相同
if cur.next and cur.val == cur.next.val:
# 找到下一个不同的结点
while cur.next and cur.val == cur.next.val:
cur = cur.next
# 删除重复结点
pre.next = cur.next
else:
# 不重复,继续遍历
pre = pre.next
cur = cur.next
return dummy.next
```
希望能够帮助到您!
阅读全文