/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
if(pHead == null){
return null;
}
if(pHead.next == null){
return pHead;
}
ListNode Head = new ListNode(0);
Head.next = pHead;
ListNode pre = Head;
ListNode cur = pHead;
while(cur != null){
if(cur.next != null && cur.val == cur.next.val){
while(cur.next != null && cur.val == cur.next.val){
cur = cur.next;//把cur移动到重复节点的最后一个,这样就可以方便cur.next是不重复的下一个节点
}
pre.next = cur.next;//这一步的操作即为删除节点的操作
cur = cur.next;//接着上一步做删除操作,并且现在当前节点进入新一轮的判断
}else{
pre = pre.next;
cur = cur.next;
}
}
return Head.next;
}
}