在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路:
1、链表为空
直接返回头结点
2、链表不为空:
1)只有两个节点相等
2)有两个以上节点相等,如:2-2-2-2-2-2:
设置一个新的头结点,它的下一个指向头结点;
设置一个遍历指针,遍历链表;
遍历链表,若指针当前值与下一个相等,指针指向下一个,直到找到不相等的位置。
此时新头结点的作用就是代表当前指针的钱一个节点,新头结点直接连接到无相等值位置的指针。
返回新的链表。
if not pHead:
return None
p1=ListNode(-1)
p1.next=pHead
p2=pHead
p3=p1
while(p2 and p2.next):
if p2.val ==p2.next.val:
val=p2.val
while p2 and p2.val==val:
p2=p2.next#只要p2和下一个值相等,指针就前进
p3.next=p2
else:
p2=p2.next
p3=p3.next
return p1.next