2017-08-11 91 views
-1

我是新來的鏈接列表。在無效的主要(),我明白了開始是這樣使用我們稱之爲節點類下一個變量像Start.next該對象類節點的對象,但我沒有得到行開始.next.next是什麼意思?穿越鏈表

接下來只有一個變量,那麼Start如何調用next.next? 程序運行正常。

public class list { 

    public static void main(String args[]) { 
     Node Start = new Node(1); 
     Start.next = new Node(2); 
     Start.next.next = new Node(3); 
     Start.next.next.next = new Node(4); 
     for (Node list = Start; list != null; list = list.next) { 
      System.out.println(list.data + " "); 
     } 
     System.out.println("Null"); 
    } 
} 

class Node { 

    int data; 
    Node next; 
    Node(int data) { 
     this.data = data; 
    } 
} 

輸出

1 
2 
3 
4 
Null 
+0

「Start.next」的類型是「Node」,就像「Start」本身一樣。這意味着''Start.next''也有一個名爲''next''的字段。這就是列表元素鏈接到下一個元素的方式,因此是名稱鏈表。 – f1sh

+0

請注意,Java命名約定建議始終使用**小寫**字母開始變量名稱(方法也是),並且只對類使用大寫。乍一看很容易區分。所以它應該是'Node start = new Node(1);'而不是'Node Start = new Node(1);'等等。 – Zabuza

回答

0
Node Start =new Node(1); 
Start.next = new Node(2); 

StartNode具有名爲next一個成員變量,這也是一個Node。 (並且Node也有自己的next節點,依此類推,每個Node都有自己的next。)所以當你說Start.next.next時,你正在訪問列表中的下一個節點。 (整體的第三節點,所述節點Start後的第二個。)

0

Start.next.nextNode next存在於Start的成員變量。

這裏是向下突破:

  1. Node Start包含Node next
  2. Node next包含自己的成員變量Node next

等等。

0

StartNode類的一個實例。 Node類包含成員,如datanext,其中data是一個整數,而nextNode。因此,我們可以說等價:

Node Start = new Node(); 
Node Second = new Node(); 
Start.next = Second; 
Node Third = new Node(); 
Second.next = Third; /* And this is equivalent to Start.next.next = Third, 
      because Start.next and Second refer to the same object instance. */ 

實質上,Start.next是Node另一個實例,因此,該對象被稱爲由Start.next還將包含.next構件。

0

如果你能認爲它是這樣的,你可以更好地理解它。
考慮Node類是有一些數據和父親一人:

class Person { 
    //some data 
    Person father; 
    Person(/*some data*/) { 
     /*this.(some data) = some data;*/ 
    } 
} 

的兒子是個Person,兒子有一些數據和父親,父親也是人,父親有也有一些數據並且還有一個父親(父親),等等......