2014-09-28 107 views
0

我正在使用一個通用類型雙向鏈表的java中的分配。我確信這是一個基本問題,但是因爲我找不到我想問的答案。本質上,給出了雙鏈表類的實現,我需要做的就是創建一些節點。我遇到的問題是節點類是列表類中的私有靜態嵌套類,我不明白應該如何使用它。 List類看起來是這樣的(留出幾個get和set方法):雙向連接列表創建節點

public class LinkedList<E> { 

    private static class Node<E>{ 
     private E element; 
     private Node<E> previous; 
     private Node<E> next; 

     public Node(E e, Node<E> p, Node<E> n) { 
      element = e; 
      prev = p; 
      next = n; 
     } 

    } 
} 

在我的司機類我用這個:

LinkedList <String> linkedlist = new LinkedList<String>(); 
    LinkedList.Node node = linkedlist.new Node(); 

    node n1 = new node("Amy", null, null); 

使用此我得到一個錯誤,指出LinkedList.Node應該更改爲默認可見性。任何幫助表示讚賞。

+0

你爲什麼不做錯誤消息推薦的內容? – 2014-09-28 23:11:44

+0

@GeroldBroser這聽起來像一個Assignment,它們可能不允許改變給定的代碼......假設Node實現是當然的。 – 2014-09-28 23:13:30

+0

不要從'LinkedList'類外部訪問節點。寫下所有與它們直接相關的代碼,而不是在LinkedList類中。 – 2014-09-28 23:14:13

回答

1

正如@Lonenebula所述,您不想從LinkedList類的外部訪問Node類。

要使用LinkedList,您不要創建節點本身,而只需將該元素添加到列表中。 LinkedList類的內部代碼將包含關於如何創建新節點的所有必需細節。

例如,要添加一個元素到列表中,您將有一個add(E e)方法。然後該方法將包含創建節點並將其添加到列表的邏輯。在你的列表類中,你應該已經擁有下一個和前一個Nodes,或者有邏輯判斷它是第一個還是最後一個Node

在任何時候,您都不需要從LinkedList類的外部訪問Node類。

+0

不幸的是,這個任務是特定的,因爲我應該先創建節點,然後將它們鏈接在一起,而不是使用添加方法。鏈接只需要我設置每個節點的下一個和前一個節點,但我不知道如何最初創建節點(我知道我將不得不創建節點,例如,下一個和上一個節點都設置null和元素定義爲例如「艾米」)。 – Learning 2014-09-29 00:55:27

+0

@學習您是否可以更新帖子以顯示問題的措辭和要求?你還在談論哪些「添加」方法?我沒有讀過你的帖子。 – 2014-09-29 01:33:25