package com.interview.algorithms.list;
import com.interview.basics.model.collection.list.Node;
/**
* Created_By: stefanie
* Date: 14-11-10
* Time: 下午9:04
*/
public class C3_22_DeleteDuplicateInList {
public static Node deleteDuplicates(Node head) {
if(head == null || head.next == null) return head; //empty or single node list
Node newHead = new Node(0); //for cases need change head
newHead.next = head;
Node prev = newHead;
Node back = prev.next;
Node front = back.next;
while(true){
while(front != null && front.item.equals(back.item)) front = front.next;
if(back.next == front){ //no duplication found, need save back
prev.next = back;
prev = back;
}
if(front == null) break;
back = front;
front = back.next;
}
prev.next = null; //prev is the last element need to save
return newHead.next;
}
}