思路:分别使用两个指针p和q, 因为可能q->val==p->val时,此时要删除q所指向的节点,所以需要一个s指针记录q,防止发生断链。
struct node {
int val;
node *next;
};
void delDuplication(node *head) {
for (node *p=head->next; p; p->next) {
for (node *q=p->next, *s=q; q) {
if (p->val == q->val) {
//删除q
s->next = q->next;
delete q;
q = s->next;
} else {
s = q;
q = q->next;
}
}
}
}