亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Java之單鏈表問題的示例分析

發布時間:2021-08-04 10:44:54 來源:億速云 閱讀:128 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Java之單鏈表問題的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

單鏈表

單鏈表是一種鏈式存取的數據結構,用一組地址任意的存儲單元存放線性表中的數據元素。

鏈表中的數據是以結點來表示的,每個結點的構成:元素(數據元素的映象) + 指針(指示后繼元素存儲位置),元素就是存儲數據的存儲單元,指針就是連接每個結點的地址數據。

問題

問題1:給定一個單鏈表,判斷鏈表中是否有環

問題2:給定一個鏈表,返回鏈表開始入環的第一個節點,如果無環,則返回null

class Node{
    public int data;
    Node next;
    public Node(int data){
        this.data=data;
        this.next=null;
    }
}
public class linkedList {
    /*給定一個鏈表,判斷鏈表中是否有環
    思路: 如果鏈表有環的話,定義兩個節點fast,slow。讓fast一次走兩步,slow一次走一步;
    如果能相交,即fast=slow,說明有交點,且如果有環,節點的next也不會為空
     */
    public Node head;
    public boolean hasCycle(){
        Node fast=this.head;
        Node slow=this.head;
        while (fast!=null&&fast.next!=null){//如果把fast.next寫下前面,一旦fast為空,則會空指針異常
            fast=fast.next.next;
            slow=slow.next;
            if(fast==slow){
                return true;
            }
        }
        return false;
    }
    
    //給定一個鏈表,返回鏈表開始入環的第一個節點,如果無環,則返回null
    public Node detectCycle(){
        /*定義fast與slow,fast前進2格,slow前進一格,如果有交點的話,fast與slow第一次相遇時,fast的路程為slow的2倍,
        如設從頭節點到入環節點的距離為X,令入環節點到fast,slow第一次相遇距離為Y,環的總長度為C的話;可得公式:2(X+Y)=X+Y+NC;
        得X=NC-Y,令N等于1,X=C-Y;此時讓slow從頭節點開始走,當于速度相同的fast相遇時,則為入環的節點。
        */
        Node fast=this.head;
        Node slow=this.head;
        while (fast!=null&&fast.next!=null){
            fast=fast.next.next;
            slow=slow.next;
            if(fast==slow){//第一次相遇  
                break;
            }
        }
        if(fast==null&&fast.next==null){
            return null;
        }
        //此時讓slow從頭節點開始,與fast以相同速度前進,遇到則為入環的第一個節點
        slow=this.head;
        while (fast!=slow){
            fast=fast.next;
            slow=slow.next;
        }
        return slow;
    }
}

感謝各位的閱讀!關于“Java之單鏈表問題的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

宜宾市| 阜城县| 梁河县| 金沙县| 镇平县| 洛川县| 新余市| 晴隆县| 呼和浩特市| 满城县| 阿拉善左旗| 宣威市| 沿河| 盐池县| 平遥县| 额济纳旗| 海城市| 定州市| 龙南县| 岫岩| 五原县| 涿鹿县| 清镇市| 万州区| 高密市| 竹山县| 抚远县| 夏河县| 固始县| 贵州省| 顺义区| 定陶县| 陵川县| 黎川县| 犍为县| 石柱| 乐东| 阿巴嘎旗| 双桥区| 蒲江县| 乌苏市|