如何检验链表有没有环
可以用快慢指针的方法来检验链表是否有环。具体步骤如下:
-
初始化两个指针,一个指向链表的头部,另一个指向链表的第二个节点。
-
慢指针每次移动一步,快指针每次移动两步。
-
如果链表有环,那么快指针最终会追上慢指针,因为快指针每次移动两步,慢指针每次移动一步,快指针肯定会在某个时刻遇到慢指针。
-
如果链表没有环,那么快指针最终会到达链表的尾部,此时可以判断链表没有环。
代码示例:
bool hasCycle(ListNode *head) {
if (head == nullptr || head->next == nullptr) {
return false;
}
ListNode *slow = head;
ListNode *fast = head->next;
while (slow != fast) {
if (fast == nullptr || fast->next == nullptr) {
return false;
}
slow = slow->next;
fast = fast->next->next;
}
return true;
}
``
原文地址: http://www.cveoy.top/t/topic/ey3Y 著作权归作者所有。请勿转载和采集!