在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
添加一个头节点,以方便碰到第一个,第二个节点就相同的情况
循环里的last->next != nullptr不要忘记
//首先添加一个头节点,以方便碰到第一个,第二个节点就相同的情况
//设置 pre ,last 指针, pre指针指向当前确定不重复的那个节点,
//而last指针相当于工作指针,一直往后面搜索。
ListNode* deleteDuplication(ListNode* pHead){
if(pHead == nullptr) return nullptr;
ListNode* preHead = new ListNode(0);
preHead->next = pHead;
ListNode* pre = preHead;
ListNode* last = pHead;
while(last != nullptr){
bool flag = false;
//注意这里的last->next != nullptr不要忘记
while(last->val == last->next->val && last->next != nullptr){
flag = true;
last = last->next;
}
if(flag){
pre->next = last->next;
last = last->next;
}else{
pre = pre->next;
last = last->next;
}
}
return preHead->next;
}