链表是否有环

Node * isLoop(Node *head){
	if (head==NULL||head->nxt==head)
	{
		return head;
	}
	Node *p=head;
	Node *q=head;
	while (p!=NULL&&p->nxt!=NULL)
	{
		p=p->nxt->nxt;
		q=q->nxt;
		if (p==q)
		{
			return q;
		}
	}
	return NULL;
}
两个速度不同的指针一起移动,如果有环,则一定相交。类似操场跑步,快的同学转一圈下来会与慢的同学碰面。

你可能感兴趣的:(链表是否有环)