2015-07-04 42 views
0

我正在通過Sedgewick的算法瞭解鏈接列表基礎知識,並且遇到了添加節點到鏈接列表的開頭。我注意到他們正在重新定義「第一點」使用下面的代碼:將節點添加到Java中的列表開頭?

Node firstNode = new Node(); 
Node secondNode = new Node(); 
Node thirdNode = new Node(); 

//create 3 initial nodes 
firstNode.item = "to"; 
secondNode.item = "be"; 
thirdNode.item = "or"; 

//set order of nodes 
firstNode.next = secondNode; 
secondNode.next = thirdNode; 

//add new node to beginning 
Node oldFirstNode = firstNode; 

//recreate first node 
firstNode = new Node(); 

firstNode.item = "not"; 
firstNode.next = oldFirstNode; 

我們爲什麼不這樣做:Node firstNode = new Node();? 不明白爲什麼它是firstNode = new Node();

+2

我不確定你的意思。兩條線都出現在您發佈的代碼中。 –

回答

3

你不能有

Node firstNode = new Node(); 

後來在代碼 - 因爲那將是試圖聲明具有相同名稱的新的本地變量作爲現有之一。 (您可以使用與實例字段或靜態字段具有相同名稱的局部變量,但同一時間範圍內不能同時包含兩個具有相同名稱的局部變量。)相反,此行爲:

firstNode = new Node(); 

現有的局部變量賦值一個新值。

1

分配給firstNode第一次是當你定義它:

Node firstNode = new Node(); 

一旦它的定義,你已經有一個變量命名爲firstNode,所以你不能重新定義它,只是分配一個新的值它 - 在這種情況下,一個新創建的Node

firstNode = new Node();