2013-11-28 30 views
0

我想創建一個項目的鏈接列表,它似乎被添加到列表,因爲我添加了三個,並且長度表示它有3個項目在列表中。鏈接列表添加和刪除功能

如何過我的刪除功能不工作我試圖從其中有三個項目列表中刪除列表中的特定項目,但它只是返回false並不會從名單

public void tableInsert (T newItem) throws TableException { 
    if (head == null) 
     head = new Node(newItem); 
    else { 
     Node tmp = head; 
     while (tmp.getNext() != null) 
      tmp = tmp.getNext(); 
     tmp.setNext(new Node(newItem)); 
    } 
} 
刪除項目

這是刪除功能

public boolean tableDelete (KT searchKey) { 
    if (head.getItem() == searchKey) { 
     head = head.getNext(); 
     return true; 
    } 

    Node current = head.getNext(); 
    Node prev = head; 

    while (current!= null) { 
     if (current.getItem() == searchKey){ 
      prev.setNext(current.getNext()); 
      return true; 
     } 
     prev = current; 
     current = current.getNext(); 
    } 

    return false; 
} 
+0

嘗試調試您的代碼。 – Taylor

+2

第一步是正確縮進代碼。甚至似乎還有一些缺失的大括號。 – Keppil

+0

@NPE建議的'equals'事似乎是最好的選擇。我的第二個猜測是忘記在'Node'構造函數中設置項目。 – creichen

回答

1

我懷疑問題是使用==平等的比較。這比較了對象引用,而您可能需要執行current.getItem()searchKey的較深(er)比較。

0

通過使用「==」比較,您只能比較對象的引用(因此,除非您將引用與相同對象進行比較,否則您總會得到false)。你的目標應該實現可比(相當長的一段關於它在互聯網上的材料)或包括您自己的功能,比較合適的領域等

更重要的是,你爲什麼要插入的對象類型T,但刪除對象類型KT?

+0

本質上試圖複製或轉換基於LinkedList的這個Table數組 http://www.cs.vassar.edu/ 〜cs102 /編碼/封裝/表/ TableArrayBased.java – IronDome