在向链表末尾添加节点时遇到了问题。 addToEnd 方法将一个单独的节点添加到链表末尾,代码非常简单易懂。
public class ll5 {
// Private inner class Node
private class Node{
int data;
Node link;
public Node(int x, Node p){
data = x;
link = p;
}
}
// End of Node class
public Node head;
public ll5(){
head = null;
}
public void addToEnd(int data) {
Node p = head;
while (p.link != null)
p=p.link;
p.link=new Node(data, null);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
ll5 list = new ll5();
list.printList();
System.out.println("How many values do you want to add to the list");
int toAdd = input.nextInt();
for(int i = 0; i < toAdd; i++) {
System.out.println("Enter value " + (i + 1));
list.addToEnd(input.nextInt());
}
System.out.println("The list is:");
list.printList();
input.close();
}
}
为什么会出现 NullPointerException 错误?错误在 addToEnd 方法中的 while 循环中。
Node p = head
会使得p = null
,因为在第一次调用addToEnd
时,head
是null
。 - StepTNT