[劍指offer] 56. 刪除連結串列中重複的結點
阿新 • • 發佈:2019-01-08
題目描述
在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列1->2->3->3->4->4->5 處理後為 1->2->5思路:
class Solution { public: ListNode *deleteDuplication(ListNode *pHead) { if (pHead == NULL || pHead->next == NULL)return pHead; ListNode *head = new ListNode(pHead->val - 1); head->next = pHead; ListNode *p = head; ListNode *q = head->next; while (q) { while (q->next && (q->next->val == q->val)) { q= q->next; } if (p->next != q) { q = q->next; p->next = q; } else { p = q; q = q->next; } } return head->next; } };