在链接列表中循环



我的代码需要在链表中找到一个循环。如果存在循环,则输出为1;否则结果为CCD_ 2。我对弗洛伊德的循环算法进行了研究和了解,并发现了其他几篇包含该算法代码的帖子。但我在HackerBank上的一些测试案例失败了。smb能告诉我代码出了什么问题吗?谢谢

int HasCycle(Node head) {
    if(head == null){
        return 0;
    }
    Node slow = head;
    Node fast = head;
    while(true)
    {
        slow = slow.next;
        if(fast.next != null){
            fast = fast.next.next;
        }
        else{
            return 0;
        }
        if(slow == null || fast == null){
             return 0;
        }
        if(slow.data == fast.data){
            return 1;
        }
    }
}

您的问题是当一个链表有.data字段时,例如所有字段都是10。根据你的算法,它总是一个循环。您需要if slow==fast返回1,而不是if slow.data==fast.data.

相关内容

  • 没有找到相关文章

最新更新