您的位置:首页 > 其它

判断一个单向链表是否有环

2016-07-29 18:46 190 查看
方法一:设置两个指针pre,last,慢的跳一步,快的跳两步,往链表末端方向移动,当慢的指针追赶上快的指针的时候说明单向链表有环。

node *pre = head;
node *last = head;
while(pre! = NULL && last != NULL)
{
pre = pre->next->next;
last = pre->next;
if(pre == last)
{
return true;
}
}
return false;


方法二:使用map来记录结点是否被访问,若存在访问两次则说明链表有环。

if(!head)
return false;
node *p = head;
while(p)
{
if(m[p] == 0)
{
m[p] == 1;
}
else if (m[p] == 1)
{
return true;
}
p=p->next;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  单链表 链表