链表是否有环

tech2024-12-07  9

快慢指针 

慢指针移动一步

快指针移动两步

如果有环:快慢指针会相遇

如果没有环:快指针会指向NULL

循环条件:(快指针指向NULL,或者快指针的下个指向NULL.....因为有quickPtr->next,,所以后后面的判断,同时如果quickPtr->next为空,说明quickPtr一定可以指向NULL的)

while(quickPtr!=NULL && quickPtr->next!=NULL)

 

/** * 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) { //快慢指针的方式 //1.快指针指向head ListNode * quickPtr = head; //2.慢指针指向head ListNode * slowlyPtr = head; while(quickPtr!=NULL && quickPtr->next!=NULL) { slowlyPtr = slowlyPtr->next; quickPtr = quickPtr->next->next; if (slowlyPtr == quickPtr) { return true; } } return false; } };

 

最新回复(0)