addLast — дважды круговой связанный список — NullPointerException

Как вставить элемент в конец дважды кругового связанного списка? Почему у меня есть NullPointerException, когда я запускаю это?

   public void addLast( String title, double length ){

    if( isEmpty()){
        head = new Episode(title, length, head, head);
      }else{
      Episode last = head.prev;
      Episode new_episode = new Episode(title, length, head, last);

      }
      }

person ylflnxr    schedule 07.04.2020    source источник
comment
Не могли бы вы оставить свой код? Проблема в том, что объект head создается только в одном условии блока if. Не видно, устанавливается ли он где-то еще   -  person Hakan Dilek    schedule 07.04.2020
comment
голова создается в конструкторе   -  person ylflnxr    schedule 07.04.2020


Ответы (1)


Код устанавливает ссылки нового узла, но не обновляет существующие ссылки в списке. Исправлено, отмечено в комментариях:

    if( isEmpty()){            // assuming if empty, head == null
        head = new Episode(title, length, head, head);
        head.next = head;      // fix
        head.prev = head;      // fix
    } else {
      Episode last = head.prev;
      Episode new_episode = new Episode(title, length, head, last);
      last.next = new_episode; // fix
      head.prev = new_episode; // fix
    }
person rcgldr    schedule 07.04.2020