删除链表中重复的结点

题目描述

在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
思路:在做这道题时,定义了前结点,当前结点和后一个节点。删除节点就是将要删除的节点赋予空值。
public ListNode deleteDuplication(ListNode pHead)
 {
     if(pHead == null) return null;
     ListNode pre = null;
     ListNode pNode = pHead;
     while(pNode!=null){
         ListNode pNext = pNode.next;
         boolean del = false;
         if(pNext!=null && pNode.val == pNext.val){
             del = true;
         }
         if(!del){
             pre = pNode;
             pNode = pNode.next;
         }else{
             int value = pNode.val;
             ListNode toBeDel = pNode;
             while(toBeDel!=null && toBeDel.val==value){
                 pNext = toBeDel.next;
                 toBeDel = null;
                 toBeDel = pNext;
             }
             if(pre == null){
                 pHead = pNext;
             }else{
                 pre.next = pNext;
             }
             pNode = pNext;
         }
     }
     return pHead;
 }
 
原文地址:https://www.cnblogs.com/yingpu/p/5833857.html