c_cpp 检测链表中循环或循环的起始节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 检测链表中循环或循环的起始节点相关的知识,希望对你有一定的参考价值。
node* find_loop_start(node *head) {
if(!head || !head->next) return NULL;
node *slow = head, *fast = head;
while(slow && fast && fast->next) {
slow = slow->next;
fast = fast->next->next;
if(slow == fast) break;
}
if(fast->next == NULL) // no loop, 4/30/2014, add this check for early return if no loop.
return NULL;
fast = head;
while(fast != slow) {
fast = fast->next;
slow = slow->next;
}
return fast;
}
以上是关于c_cpp 检测链表中循环或循环的起始节点的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 检测链表中的循环
如何检测链表中的循环?
如何在循环链表中查找循环起始节点?
c_cpp 在链表中查找循环的长度
面试:删除链表中的循环 - Java
使用 Hare and Tortoise 方法在链表中检测循环