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

2022-02-24 20:15:10 浏览数 (1)

思路:分别使用两个指针p和q, 因为可能q->val==p->val时,此时要删除q所指向的节点,所以需要一个s指针记录q,防止发生断链。

代码语言:javascript复制
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 人点赞