题目链接:
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
题目描述:
删除链表中相同的元素,与之前一道题有区别的是,链表中只要重复出现过该元素,全部删除,之前只是删除重复的内容。
分析:
写的时候头昏脑涨,马上又要考试了,分析先不写了,因为写的时候晕晕的,逻辑也没处理好,代码写的太挫。之后整理好思路再回来写。
代码:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head == NULL || head->next == NULL){
return head;
}
ListNode* pHead = (ListNode*)malloc(sizeof(ListNode));
pHead->next = head;
ListNode* pre = pHead;
ListNode* cur = pre->next;
ListNode* cmp = cur;
bool flag;
while (cur != NULL){
flag = true;
if (cmp->val != cur->val){
flag = false;
pre->next = cur;
cmp = cur;
}
else{
if (cmp == cur){
if (cur->next != NULL &&cmp->val != cur->next->val){
pre = cur;
cmp = cur->next;
}
else if (cur->next == NULL){
pre = cur;
}
}
cur = cur->next;
}
}
if (flag){
pre->next = cur;
}
return pHead->next;
}
};