一,题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
二,分析
首先,我们做了个头节点叫result,并让头指针result.next指向头节点
然后又做了两个指针,res和tmp,让他们分别指向头节点和链表首字母
代码:
result=ListNode(0)
res=result
result.next=pHead
tmp=pHead
接下来比较tmp指向的值 和 tmp.next指向的值 的大小
如果不一样,让res指向的值 的 next指针 指向tmp指向的值,并让res往后跳一格
每次比较完不管结果,都要让tmp往后无条件跳一格
代码:
while tmp and tmp.next:
if tmp.val!=tmp.next.val:
res.next=tmp
res=res.next
tmp=tmp.next
如果tmp和tmp.next的值一样,就让tmp往后跳一格,
然后再无条件跳一格,res不动
代码:
while tmp and tmp.next:
if tmp.val==tmp.next.val:
while tmp and tmp.val==tmp.next.val:
tmp=tmp.next
tmp=tmp.next
最后,让res.next指向最后的tmp
代码:
res.next=tmp
return result.next
三,完整代码