在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
------------------------------------
删除重复结点,只需要如下操作
#一开始我们就要定义一个节点。
class ListNode:
def __init__(self,x):
self.val = x
self.next = None
class Soution:
def deleteDuplication(self,pHead):
pPre = None
pCur = pHead
pNext = None
while pCur != None:
if pCur.next != None and pCur.val == pCur.next.val:
pNext = pCur.next
while pNext.next != None and pNext.next.val == cur.val:
pNext = pNext.next
if pCur == pHead:
#一直想不明白这一步是为什么
#原来这一步是为了解决一开始就有相邻重复的问题。如果一开始既有重复的,那么就要将链表头移动到pNext的后一位,去掉一开始的重复。
pHead = pNext.next
else:
#如果一开始没有重复的话,那么就将pPre下一个指到pNext的后一位。
pPre.next = pNext.next
pCur = pNext.next
else:
pPre = pCur
pCur = pCur.next
return pHead
这个链表的问题还是很难的啊,花了一天才想明白这个问题。只要搞清楚链表的增删改查就行了。