
做题时思路:(正确)
bool hasCycle(struct ListNode *head) {
//若链表中只有一个结点或没有结点,链表不会是环形链表
if(head == NULL || head->next == NULL)
return 0;
struct ListNode *pointer = head;
struct ListNode *pointer2 = head->next;
while(pointer2 != NULL) {
//如果在遍历过程中pointer2的位置小于pointer1,或者pointer2->next指向了自身(循环最后一个结点),返回true
if(pointer2 < pointer || pointer2->next == pointer2)
return 1;
pointer2 = pointer2->next;
pointer = pointer->next;
}
return 0;
}
