• 重学数据结构(五)——判断链表是否为环形


    判断链表是否为环形

    思路:
    定义两个指针fast、slow, 一次循环中让fast走两步,slow走一步。
    看两者有无相遇的机会(判断两个指针是否为同一节点),相等则为同一个节点-->链表为环形

    判断链表是否为环形的实现

    package com.codezs.datastruct.mylinkedlist;
    
    public class LinkListCircle {
        
        //判断链表是否为环形
        public boolean checkCircle(Node node){
            //如果该节点为null 则不为环形链表
            if (node == null) return false;
    
            Node fast = node.next;
            Node slow = node;
    
            while (fast != null && fast.next !=null){
                fast = fast.next.next;
                slow = slow.next;
    
                if (fast == slow) return true;
            }
            return false;
        }
    }
    

    节点类的实现

    package com.codezs.datastruct.mylinkedlist;
    
    public class Node<T> {
        T data;
        Node<T> next;
    
        Node(Node<T> next) {
            this.next = next;
        }
    
        public Node(T data, Node<T> next) {
            this.data = data;
            this.next = next;
        }
    
        public T getData(){
            return data;
        }
        public Node<T> getNext(){
            return next;
        }
        public void setNext(Node<T> next){this.next = next;}
    
    }
    
  • 相关阅读:
    快速排序及其优化
    JVM基础:深入学习JVM堆与JVM栈(转)
    java 反射简介(转载)
    java 泛型简介(转载)
    Java 注解简介
    JVM入门必看——JVM结构
    Java多线程详解(转载)
    SpringMVC 实现文件的上传与下载
    死锁简介
    SQL的模糊查询(转载)
  • 原文地址:https://www.cnblogs.com/zsiscool/p/13372663.html
Copyright © 2020-2023  润新知