定义两个指针node *fast 和 node *slow,fast每次前进两个,slow每次前进一个,如果这个链表没有环,fast肯定先指到NULL,这样即可判断该链表没有环;如果存在环,则两指针必定会相遇。
具体参考代码如下:
struct node
{
char ch;
node *next;
};
bool isRingLink(node *head)
{
node *slow = head;
node *fast = head;
while (fast && fast->next)
{
slow = slow->next;
fast = fast->next->next;
if (slow == fast)
{
break;
}
}
return !((fast==NULL) || (fast->next==NULL));
};