【题目】在一个排序的链表中,存在重复的结点,
* 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
* 例如,链表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 }