题解 | #判断链表中是否有环#

判断链表中是否有环

http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

算法思路:考虑使用快慢双指针。慢指针每次走一步,快指针每次走两步,如果链表有环,快、慢指针一定会相遇指向同一个节点(可理解为环型跑道速度快的一定可追上速度慢的),则返回true;如果链表无环,遍历完整个链表,返回false。

C语言实现:

bool hasCycle(struct ListNode* head ) {
struct ListNode *p,*q;
p=q=head;
while(q&&q->next){
	p=p->next;//慢指针p每次走一步 
	q=q->next;
	q=q->next;//快指针q走两步 
	if(q&&q->val==p->val) return true;//有环
}
return false;//无环

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务