Как добавить узел в начале связанного списка рекурсивно в java

Мне нужно добавить узел в начале связанного списка, используя рекурсию.

Ниже приведен метод добавления, который я пытаюсь реализовать. Я мог только выяснить, как добавить его в конце связанного списка :(

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

 if (this.next == null)
 {
 this.next = newNode;
 } else {
 next.add(element);
 }
 }
</e></e>
4 ответа

Это должно быть довольно просто, намного проще, чем добавление элемента в конец.

Что-то вроде этого должно работать:

public void addToFront(E element) {
 element.next = rootElement;
 rootElement = element;
}


Чтобы добавить элемент в начало односвязного списка, вы создаете новый узел и указываете его на первый узел списка.

Этот новый узел теперь является новым первым узлом связанного списка.


public Node<e> addFirst(E element)
{
 return new Node<e>(element, this.next);
}

Node<string> list;
...
list = list.addFirst("a"):
</string></e></e>

В java SE был сделан еще один трюк: создайте внешний контейнерный класс LinkedList с полем "Node". Это позволяет поддерживать счетчик для size(). Это класс с состоянием.

Вышеприведенное может быть использовано для неизменяемого класса списка, который хорош для параллелизма.


Алгоритм должен быть чем-то вроде этого

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;
 }
 }
</e></e>

licensed under cc by-sa 3.0 with attribution.