首先,我需要一個解釋而不是解決方案。正如您從代碼中看到的,我正在嘗試將MovieNode插入到MovieList中。該方法在MovieList類中。 「列表」是我保留我的MovieNodes的地方。如何在插入後在鏈表中建立連接
public void insert(Movie movie, int index)
{
MovieNode node = new MovieNode(movie);
MovieNode element;
MovieNode current = list;
while(current.previous != null)
current = current.previous;
element = current; // first node in the list
for(int n = 1; n < index; n++)
element = element.next; // determines where to put new node
node.next = element;
element.previous.next = node;
}
上面的方法似乎工作。但是,當我改變這條線
element.previous.next = node;
與這一個;
element = node;
插入後鏈接列表沒有變化。在我看來,element.previous.next與元素本身是一樣的,因爲當我們用元素替換元素時,我們也改變了列表中元素之前的節點的後繼。我們將繼任者指向我們的新元素,即節點。我對這個問題很陌生,所以我很抱歉我可能犯的錯誤。
感謝您的解釋。現在我更瞭解它。 – Riemann 2013-05-05 20:24:26
不客氣。我剛讀了你對歐根的回答的評論。你是對的,你只在正向連接節點。這是雙向鏈接的雙向鏈表,通常與這種類型的列表你應該保持對兩端的引用。 – Anthony 2013-05-05 20:42:47
再次感謝。根據你的回答,我只寫了刪除方法,它工作得很好。我實際上不明白在Java中的引用,直到我看到你的解釋:)。 – Riemann 2013-05-05 20:49:43