从有序链表中删除重复节点

leetcode地址: 

https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/

public class DeleteDuplicates {
public ListNode deleteDuplicates(ListNode head) {
if(null==head){
return null;
}
ListNode pre=head,p=head.next;
while(p!=null){
if(p.val==pre.val){
p=p.next;
continue;
}
ListNode next=p.next;
pre.next=p;
pre=p;
p=next;
}
pre.next=null;
return head;
}
}

这题很简单,但是有一点容易出错,就是处理到链表最后,很容易忘记把pre指针的next置为空。

跳出循环后,p指针和pre指针之间一定都是相同的元素,或者没有元素即pre指针就是最后一个元素,对于后一种情况是不需处理的,而对于前一种情况需要把pre指针的next置为null,所以无论哪种情况把pre.next=null都不会有错。

原文地址:https://www.cnblogs.com/zhuge134/p/10926352.html