您的位置:首页 > 其它

快慢法判断单链表中是否有循环链表

2010-03-31 15:44 281 查看
题目:写个算法,判断在一个单向链表中是否存在循环链表。

有个经典的算法就是解决这个问题的,好象是叫快慢法.他的原理是,如果A,B两人从同一地点出发,B的速度大于A,那么如果存在一个环的话,B和A肯定是能再见面的.

bool IsLoop( link* head)
{
link* s = head; //移动缓慢的指针
link* f = head; //移动快速的指针

do
{
if( s == NULL ) return (false );
s = s->next; //一次向前移动一个

if( f== NULL ) return (false );
f = f->next;

if( f== NULL ) return (false );
f = f->next; //一次向前移动2个
}while( f!= s);

return (f!=NULL);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐