是否可以刪除我的鏈接表中的所有節點以刪除我的這段代碼?如果不是,那麼如何一次刪除所有節點!如何刪除我的自定義鏈接列表中的所有節點?
我的代碼是
EditNode mynode=start;
while(mynode!=null){
mynode.editnext=null;
mynode=mynode.editnext;
}
幫助需要!在此先感謝...
是否可以刪除我的鏈接表中的所有節點以刪除我的這段代碼?如果不是,那麼如何一次刪除所有節點!如何刪除我的自定義鏈接列表中的所有節點?
我的代碼是
EditNode mynode=start;
while(mynode!=null){
mynode.editnext=null;
mynode=mynode.editnext;
}
幫助需要!在此先感謝...
由於您將mynode.editnext
設置爲null
然後嘗試引用它,因此您的代碼無法正常工作。所以這是行不通的。
要刪除鏈接列表中的所有節點,請在Java中清除頭指針。 Java將垃圾收集其餘部分。
start = null;
請注意,這個答案是爲您的自定義鏈接列表。在生產中,您應該使用LinkedList
的Java實現,該實現上有一個.clear()
方法。這是處理列表的更簡潔的方式。
這是因爲您可能有指向列表中的項目的流浪指針,並且這將保持對列表的其餘部分的引用並防止垃圾回收。您不應該像editnext
屬性那樣將組織結構構建到數據結構中。他們應該是分開的班級。
清除所有指針中的每個節點,使用下面的代碼:
EditNode mynode;
while (start != null){
mynode = start.editnext;
start.editnext = null;
start = mynode;
}
實際上,OPs代碼幾乎可以有效地工作(但很可能不像預期的那樣)。唯一的錯誤是'start'沒有設置爲'null'。 – Henry
謝謝我得到了問題上帝保佑你!再次感謝 – user1939362
您是否檢查LinkedList的方法clear()?
public void clear()
- 刪除此列表中的所有元素。此通話返回後,該列表將爲空。
我這樣做,而不使用類建立的Java!所以我需要像我的代碼那樣手動執行它?需要幫助 – user1939362
將頭節點等於空,然後讓GC做它的事。 –
如果你真的*有一個鏈表,你可以調用'clear()'。 –
我們應該怎麼知道,你隱藏了我們對'LinkedList'的實現。 – jlordo