判断一个链表是否有环,需要考虑头结点吗?

判断一个链表是否有环,如下代码,需要考虑头结点吗?如果考虑头结点,那么p2=head.next不就是第一个结点了吗?若为空,while判断为false,链表没有结点,不应该返回false吗?为什么下面代码是true啊?

    public static boolean hasLoop(Node head){
        Node p1=head;
        Node p2=head.next;
        
        while(p2!=null){
            int n1=p1.val;
            int n2=p2.val;
            if (n1==n2) {  
                return true;
            }
            p1=p1.next;
            p2=p2.next.next;
            if (p2==null) {
                return false;
            }
        }
        
        return true;//若p2为空,该链表只有一个节点,也说明该链表有环
    }


全部评论
老哥的代码不健壮, 若head为空,你这直接head.next就报错了吧。
点赞 回复 分享
发布于 2018-08-06 23:10
https://www.cnblogs.com/fankongkong/p/7007869.html 老哥不如看这个
点赞 回复 分享
发布于 2018-08-06 15:48

相关推荐

11-07 16:07
深圳大学 运营
前端飞升:学长,阿里不是卡双非吗,我深也能去吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务