package main
import . "nc_tools"
/*
 * type ListNode struct{
 *   Val int
 *   Next *ListNode
 * }
 */
func deleteDuplication(head *ListNode ) *ListNode {
    if head == nil || head.Next == nil {
        return head
    }
    //The first element is the repeating element
    sentry := new(ListNode)
    sentry.Next = head
    prev, cur := sentry, head
    for cur != nil {
        if cur.Next != nil && cur.Val == cur.Next.Val {
            for cur.Next != nil && cur.Val == cur.Next.Val {
                cur = cur.Next
            }
            prev.Next = cur.Next
            cur = cur.Next
            continue
        }
        cur = cur.Next
        prev = prev.Next
    }
    return sentry.Next
}