2014-02-08 2 views
0

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

Я получаю NullPointerException по адресу tail.next = node. Если он не закомментирован, он не проходит тест.

public void addBack (int x) 
{ 
    IntegerNode node = new IntegerNode(x,null); 
    if (head == null) 
     head = node; 
    else{ 
     node.prev = tail; 
     //tail.next = node; 
     tail = node; 

    } 

    count++; 
} 
+0

Что такое «хвост»? –

+0

хвост ссылается на последний объект в списке – user3286125

+0

Если у вас нет элементов в списке и попробуйте 'addBack', что такое значение' tail'? –

ответ

0

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

if (head == null) { 
    head = node; 
    tail = node; 
} else { 
    node.prev = tail; 
    tail.next = null; // Did you really mean tail.next = node? This looks more likely.. 
    tail = node; 
} 
+0

Должен ли я просто избавиться от хвоста.Некоторые полностью? Хотя я думаю, что не имея tail.next = node является источником моей проблемы позже в тестере – user3286125

+0

Если вам нужен хвост, то почему у него когда-нибудь было что-то другое, кроме next = null? Это круговой список? Если это не круговой, тогда tail.next всегда будет null. Если он круговой, то зачем вообще нужен хвост? –

Смежные вопросы