我有一個Java類,其由節點列表的,WordNode
,其具有類Word
和稱爲next
一個WordNode對象用作參考到下一個節點的屬性,如下所示:爪哇鏈表去除最後一個節點
class WordNode
{
Word word;
WordNode next;
WordNode(Word w)
{
word = w;
next = null;
}
Word getWord()
{
return word;
}
}
和類Word
有一個名爲name
字符串:
class Word
{
String name;
Word(String n)
{
this.name = n;
}
public String getName()
{
return name;
}
public void setName(String n)
{
name = n;
}
}
我有一個類,這是一個自定義的鏈表,而我必須添加和刪除SPECI話拼詞的名稱。我可以添加沒有問題,但是當我想刪除我有一些問題。下面是方法來刪除:
boolean remove(Word w)
{
WordNode wm = new WordNode(w);
if (list == null) return false; //can't delete on an empty list
else
{
WordNode aux = list;
while(aux != null)
{
if (wm.word.getName().compareTo(aux.word.getName()) == 0) //if the word to delete is found
{
if (aux.next == null) //to erase the last element
{
aux = null;
}
else
{
aux.word.setName(aux.next.word.getName()); //set current node's name to equal next node's
WordNode temp = aux.next.next;
aux.next = null; //to erase current node
aux.next = temp; //re-refer
}
return true;
}
else aux = aux.next;
}
return false; //reachable if word is not found
}
}
凡list
應該是包含所有節點的鏈表。 aux
是一個輔助列表,它將循環使用list
以避免解除鏈接。所以,如果我選擇刪除WordNode,我會比較名稱。它實際上是消除以及當節點是在任何地方,除了的最後一個節點:
if (aux.next == null) //to erase the last element
{
aux = null;
}
我希望能作出這樣的節點空標誌着一個新的最終的名單,但是它不得到擦除。我可以改變什麼來清除最後一個元素?預先感謝您的任何幫助/建議
aux = null只是將對象aux的引用設置爲null。最好的辦法就是aux.prev.next = null – Ben
雖然我沒有'prev'的字段。但是這不是和'aux = null'一樣嗎? – gfcf14
'if(aux.next == null)'只是告訴你你的aux是列表中的最後一個節點。將最後一個元素的引用設置爲null不會影響前一個節點,因爲它的下一個節點將引用您認爲已刪除的元素。這就是爲什麼你需要跟蹤你的前一個節點。 – Kalenda