2014-09-28 78 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