一开始想错了 仔细审题后发现是把重复的节点的值的节点全部删除
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
int i=1;
ListNode*p=head;
while(p){
i++;
p=p->next;
}
ListNode* M
M.next=head;
ListNode* F=head;
ListNode* E=head;
while(E->=NULL){
break;
}else{
if(F->val==E->next->val){
F=E->next->next;
}else{
F=F->next;
E=E->next=>next;
}
}return M;
}
};
并且也出现了错误
改进了 决定今天先看第三章内容 感觉有点不足
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode M(0);
M.next = head;
ListNode *p =&M;
ListNode *F= head;
ListNode *E = head;
while (F) {
while (E->next && F->val==E->next->val) {
E = E->next;
}
if (F==E) {
p = F;
} else {
p->next = E->next;
}
F = E = p->next;
}
return M.next;
}
};