剑指offer系列30-----删除链表中重复的节点

【题目】在一个排序的链表中,存在重复的结点,
* 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
* 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

 1 package com.exe7.offer;
 2 
 3 /**【题目】在一个排序的链表中,存在重复的结点,
 4  * 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 
 5  * 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
 6  * @author WGS
 7  */
 8 public class DeleteDuplication {
 9 
10     public class ListNode{
11         int val;
12         ListNode next=null;
13         public ListNode(int val){
14             this.val=val;
15         }
16     }
17     
18     public ListNode deleteDuplicationNodes(ListNode headNode){
19         if(headNode==null) return headNode;
20         ListNode indexNode=new ListNode(-1);
21         indexNode.next=headNode;
22         ListNode preNode=indexNode;
23         ListNode curNode=headNode;
24         
25         while(curNode!=null && curNode.next!=null){
26             if(curNode.val==curNode.next.val){
27                 int val=curNode.val;
28                 while(curNode!=null && curNode.val==val){
29                     curNode=curNode.next;
30                 }
31                 preNode.next=curNode;
32             }else{//前后不重复
33                 preNode=curNode;
34                 curNode=curNode.next;
35             }
36         }
37     
38         return indexNode.next;
39     }
40 }
原文地址:https://www.cnblogs.com/noaman/p/5570433.html