如何在链表的节点上插入数组

时间:2018-12-20 10:57:55

标签: java linked-list nodes

当我尝试在LinkedList的节点上放置字符串数组时遇到问题,这是我使用的代码。

public class Node { 

    public Node next ; 
    public String[] data;

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

这是将数组添加到Node的{​​{1}}内部的添加函数:

LinkedList
  

错误:线程“ main”中的异常java.lang.NullPointerException

2 个答案:

答案 0 :(得分:0)

需要更改逻辑

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
            }
       }

答案 1 :(得分:0)

在您的add方法中,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;
       }
    }   

我只是假设您想将数据放入新节点中。如果要将数据添加到现有的最后一个节点,只需更改方法的最后一部分。