【问题标题】:doublylinkedlist creating node双向链表创建节点
【发布时间】:2014-09-28 22:27:39
【问题描述】:

我正在使用泛型类型的双向链表在 java 中进行分配。我确定这是一个基本问题,但由于我找不到我想我会问的答案。基本上给出了双向链表类的实现,我需要做的就是创建一些节点。我遇到的问题是节点类是列表类中的私有静态嵌套类,我不明白应该如何使用它。列表类看起来像这样(省略了几个 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 更改为默认可见性。任何帮助表示赞赏。

【问题讨论】:

  • 你为什么不按照错误信息的建议去做?
  • @GeroldBroser 这听起来像是一个作业,他们可能不允许更改给定的代码......这是假设 Node 实现当然是给定的。
  • 不要从LinkedList 类之外访问节点。在 LinkedList 类中编写所有与它们直接相关的代码。
  • 是的,就是这样。给出了 LinkedList 类,因此我无法进行任何更改。作业要求我开设一个单独的司机课程。对不起,我应该更清楚。

标签: java class nested private


【解决方案1】:

正如@Lonenebula 所述,您不想从LinkedList 类之外访问Node 类。

要使用LinkedList,您不需要创建节点本身,而只需将元素添加到列表中。 LinkedList 类的内部代码将包含有关如何创建新节点的所有必需详细信息。

例如,要向 List 添加一个元素,您需要一个 add(E e) 方法。然后,此方法将包含创建节点并将其添加到列表的逻辑。在您的列表类中,您应该已经有了下一个和上一个Nodes,或者有判断它是第一个还是最后一个Node 的逻辑。

您绝对不需要从LinkedList 类之外访问Node 类。

【讨论】:

  • 不幸的是,分配是特定的,因为我应该首先创建节点然后将它们链接在一起,而不是使用 add 方法。链接只需要我设置每个节点的下一个和上一个,但我不太清楚最初如何创建节点(我知道我必须创建节点,例如将下一个和上一个都设置为 null 和定义的元素,例如“Amy”)。
  • @Learning 你能否更新帖子以显示问题的措辞和要求?还有你在说哪些add 方法?我没有读到您的帖子中的任何内容。
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多