как вставить массив в узел связанного списка - PullRequest
0 голосов
/ 20 декабря 2018

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

public class Node { 

    public Node next ; 
    public String[] data;

    public Node (Node next ) {
        this.next = next ;
        this.data = new String[6];
    }
}

Это функция добавления, которую нужно добавитьмассив внутри Node из LinkedList:

public void add() {
    Node current = head;
    if (head == null) {
        for (int i = 0; i < 6; i++) {
            head.data[i] = numData[i];
        }
    } else
        while (current != null) {
            current = current.next;
        }

    for (int i = 0; i < 6; i++) {
        current.data[i] = numData[i];
    }
}

Ошибка: исключение в потоке "main" java.lang.NullPointerException

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

В вашем методе добавления current равен null в последнем цикле for и, очевидно, если head будет null, у вас тоже будут проблемы.Кажется, вы забыли инициировать новые экземпляры, когда хотите добавить новый узел.измените ваш метод, как показано ниже:

    public void add()
    {
       Node current = head ; 
       if(head == null ){
           head = new Node(null); //here you need to initiate head
           for(int i = 0 ; i<6 ; i++){
               head.data[i] = numData[i] ; 
           }
       }
       else {
           while(current.next != null){
           current = current.next ; 
           }
           Node newNode = new Node(null); //initiating a new node
           for(int i = 0 ; i<6 ; i++){
               newNode.data[i] = numData[i] ;
           }
           current.next = newNode;
       }
    }   

Я просто предположил, что вы хотите поместить данные в новый узел.Если вы хотите добавить данные в последний существующий узел, просто измените последнюю часть метода.

0 голосов
/ 20 декабря 2018

нужно сменить логику

Node current = head ; 
       if(head == null ){
       for(int i = 0 ; i<6 ; i++){
       head.data[i] = numData[i] ;  //here you will get npe beacuse you are using null reference  of head
          }
       }
       else 
       while(current != null){
       current = current.next ; 
       }
       for(int i = 0 ; i<6 ; i++){
           current.data[i] = numData[i] ;//here you will get npe beacuse you are using null reference  of current
            }
       }
...