2013-01-03 75 views
1

是否可以刪除我的鏈接表中的所有節點以刪除我的這段代碼?如果不是,那麼如何一次刪除所有節點!如何刪除我的自定義鏈接列表中的所有節點?

我的代碼是

EditNode mynode=start; 
while(mynode!=null){ 
    mynode.editnext=null; 
    mynode=mynode.editnext; 
} 

幫助需要!在此先感謝...

+0

將頭節點等於空,然後讓GC做它的事。 –

+2

如果你真的*有一個鏈表,你可以調用'clear()'。 –

+3

我們應該怎麼知道,你隱藏了我們對'LinkedList'的實現。 – jlordo

回答

4

由於您將mynode.editnext設置爲null然後嘗試引用它,因此您的代碼無法正常工作。所以這是行不通的。

要刪除鏈接列表中的所有節點,請在Java中清除頭指針。 Java將垃圾收集其餘部分。

start = null; 

請注意,這個答案是爲您的自定義鏈接列表。在生產中,您應該使用LinkedList的Java實現,該實現上有一個.clear()方法。這是處理列表的更簡潔的方式。

這是因爲您可能有指向列表中的項目的流浪指針,並且這將保持對列表的其餘部分的引用並防止垃圾回收。您不應該像editnext屬性那樣將組織結構構建到數據結構中。他們應該是分開的班級。

清除所有指針中的每個節點,使用下面的代碼:

EditNode mynode; 
while (start != null){ 
    mynode = start.editnext; 
    start.editnext = null; 
    start = mynode; 
} 
+0

實際上,OPs代碼幾乎可以有效地工作(但很可能不像預期的那樣)。唯一的錯誤是'start'沒有設置爲'null'。 – Henry

+0

謝謝我得到了問題上帝保佑你!再次感謝 – user1939362

0

您是否檢查LinkedList的方法clear()

public void clear() - 刪除此列表中的所有元素。此通話返回後,該列表將爲空。

+0

我這樣做,而不使用類建立的Java!所以我需要像我的代碼那樣手動執行它?需要幫助 – user1939362