问题:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表 1->2->3->3->4->4->5 处理后为 1->2->5
方法:先设置一个新的空头指针newHead,把不重复的值接到newHead后面,重复的指针将指向下一个数,最后要将新链表的最后一个值置为null,不然最后一个数后面将跟着原来.next之后的数。
代码:
public ListNode deleteDuplication(ListNode pHead) {
ListNode newHead=new ListNode(-1);
ListNode temp=newHead;
ListNode cur=pHead;
while(cur!=null){
//cur.next!=null:判断是不是只有一个节点或者是不是尾巴节点
if(cur.next!=null&&cur.val==cur.next.val){
//cur再走的过程中,有可能剩下的都是相同的
while(cur.next!=null&&cur.val==cur.next.val){
cur=cur.next;
}
cur=cur.next;//多走一步
}else{
temp.next=cur;
temp=temp.next;
cur=cur.next;
}
}
temp.next=null;//手动设置,防止最后一个节点是重复的
return newHead.next;
}