回环也即一个圆,钟表就是一个环,时针和秒针终有相遇的时刻;由此我们可以看出,只要一个单位内,所走步长不同即可相遇;
可以设置两个指针,指针所走步长不同即可,若两者相遇说明该链表中有环,具体实现如下:
void Link_circle(Node *head)
{
Node *p=head;
if((NULL==p)||(NULL==p->next))//头结点为空或只有一个结点时不可能为环
{
return -1;
}
Node *p_singal,*p_double;
p_singal=p_double=head;
while(1)
{
if((NULL==p_singal)||(NULL==p_double))
{
return -1;
}
if(p_singal==p_double)
{
return 1;
}
}
}
返回值为1表示链表中有环
阅读(594) | 评论(0) | 转发(0) |