您的位置:首页 > 编程语言 > C语言/C++

【C语言】找带环单链表的环入口

2015-11-26 21:34 537 查看
[align=left]思想:(1)快慢指针,先让快指针追上慢指针[/align]
[align=left] (2)令快指针指向表头,慢指针的指向不变,两个指针同时开始走[/align]
[align=left] (3)两个指针相遇时,所指节点即为环的入口[/align]



[align=left]Node*FindEntry(Plinklist*pplist)[/align]

[align=left]{[/align]
[align=left] assert(pplist);[/align]
Node*fast
= *pplist;

Node*slow
= *pplist;
while(fast&&fast->next
) //让快指针追上慢指针

[align=left] {[/align]
[align=left] fast = fast->next->next;[/align]
[align=left] slow = slow->next;[/align]
if(fast
== slow)
[align=left] {[/align]
[align=left] break;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] fast = *pplist;[/align]
while(fast
!= slow)
[align=left] {[/align]
[align=left] fast = fast->next;[/align]
[align=left] slow = slow->next;[/align]
[align=left] }[/align]
[align=left] returnfast;[/align]
[align=left]}[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: