91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么確定一個鏈表有環及入口節點

發布時間:2021-07-01 11:52:40 來源:億速云 閱讀:243 作者:chen 欄目:編程語言

這篇文章主要介紹“Java怎么確定一個鏈表有環及入口節點”,在日常操作中,相信很多人在Java怎么確定一個鏈表有環及入口節點問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java怎么確定一個鏈表有環及入口節點”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

如何確定一個鏈表有環,入口節點是什么?

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

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

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

    }
    //創建一個帶環的鏈表
    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.編寫判斷是否存在環

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

//判斷是否有環,并找到相遇的節點
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,確定是一個有環的鏈表;
        }
        slow = slow.next;
        fast = fast.next;
        if(fast!=null){
            fast = fast.next;
        }
    }
   return null;
}

3.尋找入口節點

先讓快指針先走環的節點的個數步,在讓慢指針開始走,如果兩個指針相遇的話,那么相遇的節點必然是環的入口節點 代碼如下:

  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函數測試;

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怎么確定一個鏈表有環及入口節點 

到此,關于“Java怎么確定一個鏈表有環及入口節點”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

偏关县| 泾源县| 枣强县| 新野县| 成都市| 惠东县| 海门市| 桃园县| 玉树县| 望都县| 苍山县| 寻甸| 孝感市| 镶黄旗| 福海县| 无棣县| 凌源市| 彭州市| 山西省| 井冈山市| 乌兰浩特市| 青河县| 兴城市| 恩施市| 武宣县| 什邡市| 芦山县| 宣威市| 达州市| 华蓥市| 清丰县| 普格县| 汝州市| 成武县| 苏尼特右旗| 营口市| 榆中县| 班玛县| 烟台市| 高邮市| 喀什市|