1. 程式人生 > >[劍指offer] 56. 刪除連結串列中重複的結點

[劍指offer] 56. 刪除連結串列中重複的結點

題目描述

在一個排序的連結串列中,存在重複的結點,請刪除該連結串列中重複的結點,重複的結點不保留,返回連結串列頭指標。 例如,連結串列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; } };