所以我從頭開始構建LinkedList
。儘管代碼有效,但我對兩件事情感到困惑。引用,對象,LinkedList
當你寫(public node root
)你正在創建一個對象的引用?換句話說,這是一個指針?如果是,在方法add()
我檢查第一次迭代是否爲根equals
到null
,它是和代碼創建該類的一個實例。
我的問題來自方法Find()
。當根目錄是null
,並且我設置了temp1=root
時,不是temp1
也將是null
因爲root
是null
?或者temp1
指向root
而root
指向null
?這些有何不同?
編輯:如果temp1爲null那麼爲什麼方法find()工作?
public class LinkedList {
public Node root;
public void add(int data) {
if(root == null) {
root = new Node(data);
}
else {
Node temp1 = root;
Node temp = new Node(data);
while(temp1.getNext() != null) {
temp1 = temp1.getNext();
}
temp1.setNext(temp);
}
}
public boolean Find(int data) {
Node temp1 = root;
while(temp1 != null) {
if(temp1.getData() == data) {
return true;
}
temp1 = temp1.getNext();
}
return false;
}
}
如果你調用'查找()'那麼你有可能已經被稱爲'加()'所以'root'沒有更長的空。 – csmckelvey
你的意思是如果我調用root在find()中使用我是從add()調用它?我認爲這是從頂部調用.. – Armin
當你說「如果我叫根」,我不確定你的意思。 'root'只是一個變量,你不會「調用」它。我在說,如果你有一個LinkedList實例並且你調用了Find()方法,那麼這個列表可能會有一些內容調用之前的add()方法,這意味着root不再爲null,因爲它獲取第一次調用add()時,就會返回值。即使您沒有先調用add(),您的Find()也會有一個空檢查來防止異常。 – csmckelvey