我正在尝试实现数据结构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;
}
}
}
答案 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成员。相反,您要添加的第一个元素应该分配给自己。