使用快慢指针判断链表中是否有环
思路:
慢指针p1每次移动一个结点位置,快指针p2每次移动两个结点位置,若有环,快慢指针必相遇
注意while判断语句为while( p1->next&&p2->next&&p2->next->next )
若p2->next为空,将不再执行p2->next->next
代码:
struct ListNode {
int val;
struct ListNode *next;
};
bool hasCycle(struct ListNode *head) {
if( head==NULL )
return false;
struct ListNode *p1,*p2;
p1=p2=head;
while( p1->next&&p2->next&&p2->next->next )
{
if( p1->next==p2->next->next )
return true;
else
{
p1=p1->next;
p2=p2->next->next;
}
}
return false;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153876.html