美文网首页
判断链表中是否有环

判断链表中是否有环

作者: pw007992 | 来源:发表于2016-12-12 10:01 被阅读0次

一般思路是设置一个慢指针和一个快指针,慢指针每次移动一步,快指针每次移动两步,如果有环,则两个指针最终会相遇,否则,指针最终会指向NULL.

假设链表中有环,那么指针在其中逐个移动时,没有指向NULL的可能性,无环的链表指针才有指向NULL的可能性。注意单链表中指针只有一个next而不是两个,这就意味着链表不可能是链表-环-链表的形式只可能是链表-环的形式。

/**
 * 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) {
        ListNode* slow = head;
        ListNode* fast = head;
        while(fast != NULL && fast -> next != NULL){
            slow = slow -> next;
            fast = fast -> next -> next;
            if(slow == fast)
              return true;
        }
        return false;
    }
};

相关文章

网友评论

      本文标题:判断链表中是否有环

      本文链接:https://www.haomeiwen.com/subject/xjdpmttx.html