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

思路:分别使用两个指针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;
			}
		}
	}
}
发布了235 篇原创文章 · 获赞 51 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/ASJBFJSB/article/details/102836261