2014-11-28 4 views
-2

Вот начало класса, если оно вообще помогает. Я пытаюсь написать метод для удаления элемента из определенного индекса в дважды связанном списке. Я не уверен, что я удаленно на правильном пути, но это то, что я сделал, и я получаю исключение NullPointerException по адресу:Удаление по индексу из двусвязного списка java

prevNode.next = nextNode;

public class DoublyLinkedList { 
    Node start; 
    Node end; 
    int length; 

public DoublyLinkedList() { 
    this.start = null; 
    this.end = null; 
    this.length = 0; 
} 


public void removeAtIndex(int index) { 
    Node currentNode = start; 

    for (int i = 0; i < index; i++) { 
     if (index < 0 || index > length) { 
      System.out.println("The index is out of bounds"); 
      return; 
     } else if (currentNode == null) { 
      System.out.println("The list is empty"); 
      return; 
     } else if (i == index - 1) { 
      Node nextNode = currentNode.next; 
      Node prevNode = currentNode.prev; 
      prevNode.next = nextNode; 
      nextNode.prev = prevNode; 
      return; 
     } 
     currentNode = currentNode.next; 
    } 
} 
+0

Где ваш полный код? – Edwin

ответ

0

С вашим потоком возвращается значение null, так как currentNode сначала является нулевым.
Давайте посмотрим на ваш код. (Я думаю, вы начали программирование, справа: P)

  1. Отключить проверку IndexOutOfBounds от for, не для чего здесь петли.
  2. Ваша идея об удалении элемента в i по заданному узлу, связанному с следующим узлом. Все в порядке, и я вижу, что ваш код в порядке.
  3. Я надеюсь, что вы внедрили addNode для увеличения длины длины, потому что он не войдет в цикл for.

Еще раз проверьте свой код и очистите свой разум. Многие возвращаются не очень хорошо.

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