2014-05-09 27 views
0

我需要編寫一個方法來循環查看鏈表是否在鏈接列表中。任何幫助?Java搜索LinkedList以獲取數據返回true/false?

public class LinkedList { 
    private LinkedListNode head; 
    public boolean find(Object data){ 
      for(somethinggoeshere..){ 
       if(head==data){ 
        return true; 
      }else{ 
      return false; 
    } 
} 

任何幫助?

編輯:我的一個LinkedListNode類:

public class LinkedListNode { 

private Object data; 
private LinkedListNode next; 


public LinkedListNode(Object data, LinkedListNode next) { 
    super(); 
    this.data = data; 
    this.next = next; 
} 

public Object getData() { 
    return data; 
} 
public void setData(Object data) { 
    this.data = data; 
} 
public LinkedListNode getNext() { 
    return next; 
} 
public void setNext(LinkedListNode next) { 
    this.next = next; 
} 
} 

編輯:對於那些有興趣誰最終解決方案:

public class LinkedList { 

private LinkedListNode head; 

public boolean find(Object data){ 
     LinkedListNode temp = head; 
     while(temp!= null) // check if you have reached the tail 
     { 
      if(data.equals(temp.getData())) 
      { 
       return true; 
      } 
      temp = temp.getNext(); // move to the next node 
     } // end of while loop 
     return false; 
} // end of find method 
+3

我不會建議調用類'LinkedList' ..你可能混淆了Java的'LinkedList'類 – Alejandro

+0

你嘗試過什麼?你創建了LinkedListNode對象嗎?爲什麼不能只看到LinkedListNode.NextNode == null? –

+0

我將遍歷的鏈表將包含數據。我這樣做的全部原因是用一組字符(例如「ump」)搜索鏈接列表,並在列表中出現短語「ump」時返回。 – Cole

回答

0

假設你寫的代碼爲LinkedListNode,你應該知道閹羊與否是Iterable,因此能夠通過for-each循環來遍歷它。現在,您應該通過使用某種形式的「下一個」指針來遞歸地或以迭代的方式遍歷節點,這些指針在每個節點中都存在,實質上是通過鏈接進行線性搜索,直到找到您正在查找的數據,或者返回null

下面是關於執行一個鏈表一些幫助的鏈接:

http://www.danielacton.com/Data-Structures/Linked-List/Java/

+0

我確實有一個LinkedList節點類的設置: public class LinkedListNode { \t private Object data; \t private LinkedListNode next; \t \t \t公衆一個LinkedListNode(對象數據,一個LinkedListNode下){ \t \t超級(); \t \t this.data = data; \t \t this.next = next; \t} \t \t 公共對象的getData(){ \t \t返回數據; \t} \t public void setData(Object data){ \t \t這個。數據=數據; \t} \t public LinkedListNode getNext(){ \t \t return next; \t} \t public void setNext(LinkedListNode next){ \t \t this.next = next; \t} \t 你推薦這樣做的方法是?遞歸或迭代? 我無法將其作爲代碼顯示,對不起。 – Cole

+0

您可以將該代碼作爲問題的一部分發布,以便更好地查看它? – Alejandro

0

您通過您的LinkedList需要循環和搜索數據。如果您到達列表的尾部,仍然無法找到數據,這意味着數據不在LinkedList中。

我假設LinkedListNode有一個成員變量數據來存儲每個節點中的數據。下面是更正後的代碼:

public class LinkedList { 

private LinkedListNode head; 

public boolean find(Object data) 
{ 
     LinkedListNode temp = head; 
     while(temp!= null) // check if you have reached the tail 
     { 
      if(data.equals(temp.getData())) 
      { 
       return true; 
      } 
      temp = temp.getNext(); // move to the next node 
     } // end of while loop 
     return false; 
    } // end of find method 
} 
+0

該循環將無限運行;) – Alejandro

+0

感謝您指出......忘了移動到下一個節點! – Kakarot

+0

考慮到數據,接下來是私人......我如何使用它而不公開這些屬性? – Cole