给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
举例:
原链表: 1->1->2->3->3
删除后: 1->2->3
public class Code_05 {
public static void main(String[] args) {
Code_05 c = new Code_05();
ListNode n = new ListNode();
ListNode head = n;
for (int i = 1; i <= 5; i++) {
n.next = new ListNode(i);
n = n.next;
if (i % 2 == 0) {
n.next = new ListNode(i);
n = n.next;
}
}
System.out.println("原链表:" + head);
System.out.println("删除后:" + c.deleteDuplicates(head));
}
/**
* 通过不断移动cur,判断当前cur的值与cur.next的值是否相等,如果相等,则只改变cur.next,并让其指向下一个节点,就等于跳过了cur.next的节点
* 如果不相等,则移动cur节点位置到cur.next上。
* @param head
* @return
*/
public ListNode deleteDuplicates(ListNode head) {
ListNode cur = head;
while (cur != null && cur.next != null) {
if (cur.val != cur.next.val) {
cur = cur.next;
} else {
cur.next = cur.next.next;
}
}
return head;
}
}