在链表实现上遇到nullpointerexception

时间:2014-02-11 23:03:17

标签: java nullpointerexception nodes

当我尝试将特定索引处的内容添加到我的链表时,我收到了一个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,但是在它们有值之前我无法对它们做任何事情。但是,似乎为了能够为它们赋值,它们不能为空。我只是无法绕过它。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

在我看来,您需要在newNode的第二行初始化add(...),而不是将变量设置为null。

答案 1 :(得分:0)

添加节点时,需要为新节点分配内存。

因此,当您创建newNode时,为其分配内存:

Node left = null, newNode = new Node();