簡體   English   中英

試圖了解有關Java中的節點和鏈表的更多信息

[英]Trying to understand more about the nodes and linkedlist in java

我剛剛開始學習LinkedLists和節點,但是我對這段代碼不了解:¸

public class ListeChainee<E> {

private Noeud debut=null;
private Noeud fin=null;
private int taille=0;

private class Noeud 
{
    private E contenu;
    private Noeud suivant;

    Noeud(E contenu, Noeud suivant)
    {
        this.contenu=contenu;
        this.suivant=suivant;
    }
}
public boolean add(E element)
{
    Noeud n= new Noeud(element,null);

    if(taille==0)
        debut= n;           
    else
        fin.suivant=n;      
    fin=n;
    taille++;
    return true;
}

在我的主班上,我有這個:

ListeChainee<Integer> liste= new ListeChainee<Integer>(); liste.add(2); liste.add(3);

我試圖了解為什么當我執行“ liste.add(3)”時,debuty.suivant會發生變化? 謝謝您的幫助

當您添加2時,它是列表中的第一個節點,因此是它的首次亮點。 但它沒有后繼者,因此suivant為null。

當您添加3時,2需要指向3,因此2的suivant鏈接指向3。這恰好是因為2是第一個節點,所以您看到了launch.suivant的這一變化,因為Premiere和fin是同一節點。這點。

當您執行“ liste.add(3)”時,debuty.suivant會發生變化,因為當列表包含單個Noeud時,debuty和fin引用相同的Noeud,因此在add方法中fin.suivant = n等同於premiere.suivant = n添加第二個節點時。

考慮以下代碼行,以了解為什么對列表的第一個Noede首次亮相== fin:

if(taille==0)
    debut= n;           
...  
fin=n;

首次亮相和fin都被分配為n,因此,在第二個加法中更改fin.suivant時,也將首次亮相。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM