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 ;
}
};