题目描述:
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
解题思路:首先设置一个傀儡节、结点作为新链表的头结点,然后遍历链表,如果遇到重复的结点则继续遍历,若结点不重复则将该结点插入到傀儡节点之后,最后返回傀儡结点的下一个结点即为删除重复结点后链表的头指针。
public ListNode deleteDuplication(ListNode pHead) {
if(pHead==null){
return null;
}
if(pHead.next==null){
return pHead;
}
ListNode newhead=new ListNode(0);
ListNode newTail=newhead;
ListNode cur=pHead;
while(cur!=null){
if(cur.next!=null&&cur.val==cur.next.val){
while(cur!=null&&cur.next!=null&&cur.val==cur.next.val){
cur=cur.next;
}
}else{
newTail.next=new ListNode(cur.val);
newTail=newTail.next;
}
cur=cur.next;
}
return newhead.next;
}