#3521. [GESP202509 五级 C++] 第 3 题

[GESP202509 五级 C++] 第 3 题

函数 hasCycle 采用Floyd快慢指针法判断一个单链表中是否存在环,链表的头节点为 head,即用两个指针在链表上前进:slow 每次走 1 步,fast 每次走 2 步。若存在环,fast 终会追上 slow(相遇);若无环,fast 会先到达 nullptr,则横线上应填写( )。

struct Node {
    int val;
    Node *next;
    Node(int x) : val(x), next(nullptr) {}
};

bool hasCycle(Node *head) {
    if (!head || !head->next)
        return false;
    Node* slow = head;
    Node* fast = head->next;
    while (fast && fast->next) {
        if (slow == fast) return true;
        ______________________          // 在此填入代码
    }
    return false;
}

{{ select(1) }}

  • slow = slow->next; fast = fast->next->next;
  • slow = fast->next; fast = slow->next->next;
  • slow = slow->next; fast = slow->next->next;
  • slow = fast->next; fast = fast->next->next;