当我尝试将特定索引处的内容添加到我的链表时,我收到了一个nullpointerexception。我知道为什么,但我不知道如何解决它。
这是我的链表节点的代码
public class LinkedList<Key> implements LinkedListInterface<Key>{
private Node head;
private Node tail;
private int size = 0;
private class Node{
Key key;
Node next;
}
这是我的代码,我试图在特定索引处添加到链接列表。
public void add(int index, Key key) {
if(index < size){
Node left = null, newNode = null;
Node right = head;
for(int i = 0; i < index; i++){
left = right;
right = right.next;
}
left.next = newNode;
newNode.next = right;
newNode.key = key;
size++;
}
else{
addToEnd(key);
}
}
private void addToEnd(Key key) {
Node lastNode = new Node();
if(size == 0){
tail = head = lastNode;
}
else{
lastNode.key = key;
tail.next = lastNode;
tail = lastNode;
}
size++;
}
我知道默认情况下我的节点将为null,但是在它们有值之前我无法对它们做任何事情。但是,似乎为了能够为它们赋值,它们不能为空。我只是无法绕过它。
感谢您的帮助
答案 0 :(得分:1)
在我看来,您需要在newNode
的第二行初始化add(...)
,而不是将变量设置为null。
答案 1 :(得分:0)
添加节点时,需要为新节点分配内存。
因此,当您创建newNode时,为其分配内存:
Node left = null, newNode = new Node();