力扣刷题:1-环形链表(141)

123 阅读1分钟

这是一道判断链表是否有环的题,使用两个快慢不同的节点指针遍历链表,如果两个不同速度的指针最后相遇了,就说明链表中有环了。

这道题非常简单,下面是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;
}