欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java如何確定一個鏈表有環(huán)及入口節(jié)點

 更新時間:2021年04月08日 11:57:08   作者:沉默著忍受  
這篇文章主要介紹了java如何確定一個鏈表有環(huán)及入口節(jié)點,想了解數(shù)據(jù)結(jié)構(gòu)的同學可以參考下

如何確定一個鏈表有環(huán),入口節(jié)點是什么?

1.首先定義一個單鏈表;

var ,next,是單鏈表中的屬性,分別表示節(jié)點值和下一個節(jié)點的指向;
代碼如下:

//定義一個鏈表
  class  List{
    public  int var;
    public  List next;
//有參構(gòu)造
    public List(int var) {
        this.var = var;
    }
//無參構(gòu)造
    public List() {

    }
    //創(chuàng)建一個帶環(huán)的鏈表
    public  List Create(){
        List a = new List(1);
        List b = new List(2);
        List c = new List(3);
        List d = new List(4);
        List e = new List(5);
        List f = new List(6);
        a.next = b;
        b.next =c;
        c.next = d;
        d.next =e;
        e.next = f;
        f.next =d;
        return  a;
    }

2.編寫判斷是否存在環(huán)

如果存在,則返回這個節(jié)點,如果不存在則返回null,定義快慢指針,如果快的追上了慢的指針,那么這個鏈表必存在環(huán),如果沒有追上,或者都為null,那么這個鏈表沒有環(huán);
代碼如下:

//判斷是否有環(huán),并找到相遇的節(jié)點
public  List MeetingNode(List node){
    List slow = new List();
    List fast = new List();
    if(node==null) return  null;
    slow = node.next;
    if(slow==null) return  null;
    fast=slow.next;
    while (fast!=null && slow!=null){
        if (fast==slow){
            return fast; //fast追上了slow,確定是一個有環(huán)的鏈表;
        }
        slow = slow.next;
        fast = fast.next;
        if(fast!=null){
            fast = fast.next;
        }
    }
   return null;
}

3.尋找入口節(jié)點

先讓快指針先走環(huán)的節(jié)點的個數(shù)步,在讓慢指針開始走,如果兩個指針相遇的話,那么相遇的節(jié)點必然是環(huán)的入口節(jié)點
代碼如下:

  public  List Enterdear(List node){
        if(node==null) return null;
        if(MeetingNode(node)==null) return null;
        int count =1;
        List res2;
        List res1 = MeetingNode(node);
        while (res1.next!=MeetingNode(node)){
            res1 = res1.next;
            count++;
        }
        res1 = node;
        for(int i = 0;i<count;i++){
            res1 =res1.next;
        }
        res2 = node;
        while (res1!=res2 && res1!=null && res2!=null){
            res1 = res1.next;
            res2 = res2.next;
        }
        return res1;
    }
}

main函數(shù)測試;

ublic class Deom {

    public static void main(String[] args) {
       List SB = new List();
       List res = SB.Create();
       List dear= SB.Enterdear(res);
       System.out.println(dear.var);

    }


}

以上就是java如何確定一個鏈表有環(huán)及入口節(jié)點的詳細內(nèi)容,更多關(guān)于java鏈表及入口節(jié)點的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你真正理解Java中的內(nèi)部類

    一文帶你真正理解Java中的內(nèi)部類

    不知道大家在平時的開發(fā)過程中或者源碼里是否留意過內(nèi)部類,那有思考過為什么要有內(nèi)部類,內(nèi)部類都有哪幾種形式,本篇文章主要帶領(lǐng)大家理解下這塊內(nèi)容
    2022-08-08
  • Java中JDK動態(tài)代理的超詳細講解

    Java中JDK動態(tài)代理的超詳細講解

    JDK 的動態(tài)代理是基于攔截器和反射來實現(xiàn)的,JDK代理是不需要第三方庫支持的,只需要JDK環(huán)境就可以進行代理,下面這篇文章主要給大家介紹了關(guān)于Java中JDK動態(tài)代理的超詳細講解,需要的朋友可以參考下
    2022-10-10
  • springboot項目中配置redis詳細的教程

    springboot項目中配置redis詳細的教程

    Redis是一種高性能的鍵值存儲數(shù)據(jù)庫,而Spring Boot是一個簡化了開發(fā)過程的Java框架,這篇文章主要給大家介紹了關(guān)于springboot項目中配置redis詳細的教程,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-04-04
  • Spring Cloud Feign實現(xiàn)動態(tài)URL

    Spring Cloud Feign實現(xiàn)動態(tài)URL

    本文主要介紹了Spring Cloud Feign實現(xiàn)動態(tài)URL,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 詳解SpringBean基于XML的裝配

    詳解SpringBean基于XML的裝配

    Bean的裝配可以理解為依賴關(guān)系注入,Bean的裝配方式也就是Bean 的依賴注入方式.Spring容器支持多種形式的Bean的裝配方式,如基于XML的Bean裝配,基于Annotation的Bean裝配和自動裝配等.本文就帶大家了解SpringBean基于XML的裝配,需要的朋友可以參考下
    2021-05-05
  • Java多種經(jīng)典排序算法(含動態(tài)圖)

    Java多種經(jīng)典排序算法(含動態(tài)圖)

    排序算法是老生常談的了,但是在面試中也有會被問到,例如有時候,在考察算法能力的時候,不讓你寫算法,就讓你描述一下,某個排序算法的思想以及時間復(fù)雜度或空間復(fù)雜度。我就遇到過,直接問快排的,所以這次我就總結(jié)梳理一下經(jīng)典的十大排序算法以及它們的模板代碼
    2021-04-04
  • Java預(yù)覽PDF時的文件名稱問題及解決

    Java預(yù)覽PDF時的文件名稱問題及解決

    這篇文章主要介紹了Java預(yù)覽PDF時的文件名稱問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot2.0整合logback日志的詳細代碼

    springboot2.0整合logback日志的詳細代碼

    這篇文章主要介紹了springboot2.0整合logback日志的應(yīng)用場景分析,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • springboot如何獲取application.yml里值的方法

    springboot如何獲取application.yml里值的方法

    這篇文章主要介紹了springboot如何獲取application.yml里的值,文章圍繞主題相關(guān)自資料展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • springboot自動配置沒有生效的問題定位(條件斷點)

    springboot自動配置沒有生效的問題定位(條件斷點)

    這篇文章主要介紹了springboot自動配置未生效問題定位,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來學習一下吧
    2019-06-06

最新評論