这是一道判断链表是否有环的题,使用两个快慢不同的节点指针遍历链表,如果两个不同速度的指针最后相遇了,就说明链表中有环了。
这道题非常简单,下面是C语言实现的代码:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
bool hasCycle(struct ListNode *head) {
struct ListNode *slow = head;
struct ListNode *fast = head;
while (fast != NULL) {
slow = slow->next;
fast = fast->next;
if (fast == NULL) {
return false;
}
fast = fast->next;
if (slow == fast) {
return true;
}
}
return false;
}