/** * 题目:(删除链表中重复的结点) * 在一个排序的链表中,删除重复的节点。 * 例如: * 1-2-3-3-4-4-5 * 被删除后变为; * 1-2-5 * */ public class P122_DeleteRepeatingNode { public ListNode deleteDuplication(ListNode pHead) { if (pHead == null) { return pHead; } ListNode result = new ListNode(-1); result.next = pHead; ListNode temp = result; ListNode node = pHead; while (node != null && node.next != null) { if (node.val == node.next.val) { int Value = node.val; while ( node != null&&node.val == Value ){ temp.next = node.next; node = node.next; } } else { temp = node; node = node.next; } } return result.next; } public static void main(String[] args) { ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(3); ListNode node5 = new ListNode(4); ListNode node6 = new ListNode(4); ListNode node7 = new ListNode(5); node1.next = node2; node2.next = node3; node3.next = node4; node4.next = node5; node5.next = node6; node6.next = node7; P122_DeleteRepeatingNode test = new P122_DeleteRepeatingNode(); ListNode result = test.deleteDuplication(node1); while (result != null) { System.out.print(result.val+" "); result = result.next; } } }