簡體   English   中英

刪除鏈表中第一個出現的項目

[英]Delete the first occurrence of an item in a linked list

我試圖僅使用list.firstlist.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM