剛開始學習節點,我有幾個問題。比方說,我有一個節點類,看起來像這樣:關於遍歷,插入和刪除節點的問題
private E number;
private Node next;
/**
* Constructor
*/
Node(E e){
number = e;
next = null;
}
和我有起始節點的一系列鏈接節點的第一個命名的,像這樣:
第一 - >(1) - >(2 ) - >(3) - >(5) - >(6)
假設列表不爲空,遍歷目錄,我會做一些像這樣:
Node curr = first;
while(curr != null){
System.out.print(curr);
curr = curr.next;
}
我明白你不能像這樣反向鏈接列表,所以這是否意味着每當我調用curr.next時,之前的元素都會丟失?
我還想知道,如果我的原始列表首先會受像curr這樣的臨時節點列表的影響嗎?例如,如果我是插入或刪除一個節點列表上類似於這些代碼:
插入:
Node curr = first;
Node newNode = new Node(4);
while(curr != null){
if(curr.number == 3){
newNode.next = curr.next;
curr.next = newNode;
}
curr = curr.next;
}
刪除:
Node curr = first;
Node parent = first;
while(curr != null){
if(curr.number == 3){
parent.next = curr.next;
}
parent = curr;
curr = curr.next;
}
請問上面的代碼修改第一或在插入或刪除更改後,是否需要設置first = curr;
?如果他們先修改,那麼curr = curr.next;
怎麼不先修改?如果我想返回刪除的節點怎麼辦?我會只是做一些像curr.next = null;
然後return curr;
?
感謝您的回答!我想我明白了。如果引用它的任何內容被修改,「first」將會改變;否則,我將不得不更新它以發生更改。 –