/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { if (!head->next || !head) { //如果链表为空或者链表只有一个元素,则链表没环 return false; } ListNode* fast = head;//定义一个快指针 ListNode* slow = head;//定义一个慢指针 while (fast->next->next && fast->next) { fast = fast->next->next; //每次快指针向后走两步 slow = slow->next; //每次慢指针向后走一步 if (fast == slow) { //如果快慢指针相遇了,说明链表有环,否则没环 return true; } } return false; } };