删除单链表中重复节点
1
class Solution { public: ListNode* deleteDuplication(ListNode* pHead) { if(pHead==NULL||pHead->next==NULL)//当前指针为空 //或者链表就一个节点 return pHead; ListNode*head=new ListNode(0); //新建一个节点 头结点 指向当前这个 防止头结点也有被删除的可能; head->next=pHead; ListNode * pre=head; ListNode * last=head->next; while(last!=nullptr)//不是尾部 //用last工作指针后移 { if( last->next!=nullptr&&last->val==last->next->val) //last已经不是空指针 last next也不能是空指针 { // 找到最后的一个相同节点 while(last->next!=nullptr&&last->val==last->next->val) {last=last->next;} //连接 pre->next= last->next; //不换值 只换指向 last=last->next; } else //普通情况 { pre=last; last=last->next;//一步一步的向后移动 } } return head->next ; } };