**
题目描述
**
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
解析
使用一个伪节点作为头结点来保存结果。最后返回伪节点的next。使用指针cur遍历链表,因为是升序链表所以遇到cur.val和cur.next.val不相等时就不是重复的结点,p和cur都移动到下一个节点接着遍历就行。若遇到重复结点全部删除后继续处理。
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates(ListNode head) {
ListNode node = new ListNode(-1);
node.next = head;
ListNode p= node ;
ListNode cur = head;
while (cur!= null && cur.next != null) {
if(cur.val != cur.next.val) {
p= cur;
}else {
while (cur.next != null && cur.val == cur.next.val)
cur = cur.next;
p.next = cur.next;
}
cur = cur.next;
}
return node .next;
}
}