LinkedList(custom)add()返回NullPointerException

时间:2016-05-01 08:42:55

标签: java data-structures

我正在尝试实现数据结构Linked List(Singly)但是通过添加元素返回NULLPOINTEREXCEPTION。

import java.util.NoSuchElementException;

public class Linkedlist<ANYTYPE>{

private Node head;

Linkedlist(){
    head = null;
}

public void add(ANYTYPE data){
    head.next = new Node<>(data, head);
}

public void traverse(){
    if(head == null) throw new NoSuchElementException("List may be empty");

    Node temp = head;

    while(temp != null){
        System.out.println(temp.data+" ");
        temp = temp.next;
    }
}

public static void main(String[] args) {

    Linkedlist<String> l=new Linkedlist<String>();
    l.add("one");
    l.add("two");
    l.traverse();
}


private class Node<ANYTYPE>{

    private ANYTYPE data;
    private Node next;

    Node(ANYTYPE data, Node next){
        this.data = data;
        this.next = next;
    }
}

}

2 个答案:

答案 0 :(得分:0)

是的,因为在您的构造函数中,您将head设置为null,如下所示

Linkedlist(){
    head = null;
}

然后在Add()尝试执行head.next,然后执行异常

public void add(ANYTYPE data){
    head.next = new Node<>(data, head);
}

答案 1 :(得分:0)

在add()方法中,你必须检查是否还有任何节点(正如你在traverse()方法中所做的那样)。 如果(head == null),则无法访问.next成员。相反,您要添加的第一个元素应该分配给自己。