[英]Delete the first occurrence of an item in a linked list
我試圖僅使用list.first
和list.next
從鏈接列表中刪除項目的首次出現。 (這不使用Java LinkedList<E>
。)
我已經編寫了以下代碼,但是它刪除了所有出現的內容,而不僅僅是第一個:
private static <T> Cell<T> remove(T n,Cell<T> list)
{
Cell<T> ptr; // pointer
Cell<T> temp=null; // new empty list
for(ptr=list; ptr!=null; ptr=ptr.next) {
if(!ptr.first.equals(n))
temp=new Cell<T>(ptr.first,temp); //I guess this is the problem
}
if(ptr!=null)
ptr=ptr.next;
for(; temp!=null; temp=temp.next)
ptr=new Cell<T>(temp.first,ptr);
return ptr;
}
如果n
等於3
並且list
等於[1,3,4,5,3,2]
,我得到的結果是[1,4,5,2]
,但我希望它是[1,4,5,3,2]
。
有人可以幫助我了解我在做什么錯嗎?
您可能會更輕松地修改原始列表,而不是創建一個新列表。 您可以簡單地保持指向列表開頭的指針,並使用當前指針和前一個指針遍歷列表。 當找到第一個包含n的單元格時,請重新綁定前一個單元格的.next以跳過當前單元格。 這樣,您可以立即返回列表的開頭,而無需繼續遞歸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.