一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
public ListNode deleteDuplication() {
if (this.head == null) {
return null;
}
ListNode cur = this.head;
ListNode newHead = new ListNode(-1);
ListNode temp = newHead;
while (cur != null) {
//重复的节点
if (cur.next != null && cur.data == cur.next.data) {
//每一次重复都需要判断cur.next
while (cur.next != null && cur.data == cur.next.data) {
cur = cur.next;
}
//两个重复点相邻时
cur = cur.next;
} else {
temp.next = cur;
temp = temp.next;
cur = cur.next;
}
}
temp.next = null;//最后一个结点也是重复的,需要将temp.next置为空
return newHead.next;
}
public void display(ListNode newHead) { //要从新的头开始打印,需要接受newHead
if (newHead == null) {
return;
}
ListNode cur = newHead;
while (cur != null) {
System.out.print(cur.data + " ");
cur = cur.next;
}
System.out.println();
}