题目描述
在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
解答
这道题不复杂,就是要细心,有很多边界条件需要判断,容易出错。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public ListNode deleteDuplication(ListNode pHead) { if (pHead == null) { return null; } ListNode p, pHeadAns = null, ptail = null; for (p = pHead; p != null; ) { int count = 0; ListNode pp; for (pp = p; pp != null && pp.val == p.val; pp = pp.next) { count++; } if (count == 1) { if (pHeadAns == null) { pHeadAns = p; } else { ptail.next = p; } ptail = p; ptail.next = null; } p = pp; } return pHeadAns; }
|