在单链表中删除值相同的多余节点的算法

mac2024-04-15  53

思路:分别使用两个指针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; } } } }
最新回复(0)