因此,您有一個名爲Node的類,其中包含兩個名爲next和data的實例變量。它們被稱爲實例變量,因爲它們屬於這個類的實例,而不屬於類本身。也就是說,你的類基本上是一個對象的模板(或藍圖),每個對象將擁有自己的數據值和下一個值。
爲了創建一個Node類的實例,您需要調用構造函數並傳遞必要的參數。在你的情況下,構造函數是;
public Node(int d) {
data = d;
}
要調用此構造函數,請使用new關鍵字(在Java中,我假設)像這樣;
Node x = new Node(10);
並注意到您必須爲構造函數提供一個整數值。在構造函數的主體中({}之間),您會看到變量數據被分配給d中的值,該值是您傳遞給構造函數的值,在本例中爲值10.您現在有一個類型的對象值爲10的節點是數據,下一個節點是空值。
在該對象上,您現在可以調用方法appendToTail()。可以說我們這樣做:
x.appendToTail(20);
讓我們跟蹤發生了什麼。創建
Node end = new Node(d);
命名結束一個新節點,我們設定的值20的數據(記住,d的值是20,現在,因爲這是我們當我們調用方法傳遞的值)。這是一個完全獨立於x的節點,具有自己獨特的數據值。
Node n = this;
這是一個自參考當前對象。既然我們在x上調用了這個方法,那麼這個對象就和x一樣。
while (n.next != null) {
n = n.next;
}
這個while循環將開始尋找名單從當前節點要到下一個節點,直至下一個節點是空的結束。由於我們迄今爲止創建的唯一節點是x,因此n.next實際上是null,所以while循環不會執行這一次。
n.next = end;
現在我們將n(它是x)的下一個值設置爲創建的節點端。現在,您有這樣的名單:
10 -> 20 -> null
假如你做以下電話:
x.appendToTail(30);
然後類似的事情發生,當你到了while循環值n.next是除不是null,所以你進入循環的主體,並指定n指向n.next,在我們的例子中是20節點。循環的下一個迭代將產生null,因此循環將退出,新節點將與數據30將被設置爲列表中最後一個節點的下一個值。所以你將有:
10 -> 20 -> 30 -> null
這是什麼語言? – 2011-05-04 01:02:36