Преобразовать односвязный список в двусвязный список

Вот код, который у меня сейчас есть. Содержит только метод addFirst.

public void addFirst(E e) {     
    Node<E> newNode = new Node<E>(e); 
    if (tail == null)           
        head = tail = newNode; 
    else {
        newNode.next = head;    
        head = newNode;         
    }
    size++;
}

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

        public Node(E e) {
            element = e;
      }
}

Попытка настроить "предыдущее" поле

public void addFirst(E e) {     
    Node<E> newNode = new Node<E>(e); 
    if (tail == null)           
        head = tail = newNode; 
    else {
        newNode.next = head;
        firstElement.previous = newNode; //*
        head = newNode;
        newNode.previous = null;
    }
    size++;
}

private static class Node<E> {  
        E element;
        Node<E> next, previous; //adding previous field

        public Node(E e) {
            element = e;
      }
}

* Я хочу, чтобы firstElement.previous указывал на newNode. Как я могу это сделать?

1 ответ

Решение

Менять:

firstElement.previous = newNode

в

head.previous = newNode;
Другие вопросы по тегам