C++ 判断 next 不等于 next next 纠结了很久 希望长点记性

class Solution {
  public:
    ListNode* deleteDuplication(ListNode* pHead) {
        ListNode* L = new ListNode(-1), *p = L;
        p->next = pHead;
        ListNode* c = p;
        // next 和 next next 不相等
        while (c->next) {
            if (c->next->next && c->next->val == c->next->next->val) {
                ListNode* t = c->next;
                for (; t && c->next->val == t->val; t = t->next);
                c->next = t; // 而不是 c = t->next
            } else {
                cout << c->val << ' ' << c->next->val << ' ';
                c = c->next;
                p = p->next;
            }
            // cout << p->val << ' ';
        }
        return L->next;
    }
};