0

我需要使用递归在链表的前面添加一个节点。

下面是我正在尝试实现的 add 方法。我只能弄清楚如何将它添加到链表的后面:(

    public void add(E element)
    {
        Node<E> newNode = new Node<E>(element, null);

        if (this.next == null)
        {
            this.next = newNode;
        } else {
            next.add(element);
        }
    }
4

4 回答 4

1

它应该非常简单,比将元素添加到末尾要容易得多。

像这样的东西应该工作:

public void addToFront(E element) {
    element.next = rootElement;
    rootElement = element;
}
于 2013-10-06T16:23:07.997 回答
1

要将项目添加到单链表的前面,您需要创建一个新节点并使其指向列表的第一个节点。

这个新节点现在是链表的新第一个节点。

于 2013-10-06T16:18:06.173 回答
0

算法应该是这样的

 public void add(E element)
    {
        Node<E> newNode = new Node<E>(element, null);
      if (root == null) 
      { 
         root = new Node(element, null);
      }
      else 
      {
         Node temp = new Node(element, null);
         temp.next = root;
         root = temp;
      }
    }
于 2013-10-06T16:26:32.580 回答
0
public Node<E> addFirst(E element)
{
    return new Node<E>(element, this.next);
}

Node<String> list;
...
list = list.addFirst("a"):

在 java SE 中完成了另一个技巧:使用字段“Node”创建外部容器类 LinkedList。这使得可以维护一个计数器size()。这是一个有状态的类。

以上可用于不可变列表类,这有利于并发。

于 2013-10-06T16:27:13.377 回答