我的链表中的Nullpointerexception

时间:2015-01-30 23:11:06

标签: java list exception insert nullpointerexception

我有一个List类,我有这个插入函数。该列表正逐渐对列表中的数字进行排序。当我插入以下语句Ape ={ 1, 2, 3, 4, 2, 3, 4, 5, 3, 4, 6 }时,我得到一个nullpointer异常。

public List<E> insert (E d){
    Node<E> newNode= new Node<E>(d);
    if(isEmpty()){
        current=first=last=newNode;
        numberOfNodes++;
        return this;
    }

    if(newNode.data.compareTo(first.data)>0){
        first.prior=newNode;
        newNode.next=first;
        first= current = newNode;
        numberOfNodes++;
        return this;
    }

    setFirst();
    while(current.next != null && newNode.data.compareTo(current.data)<0){
        current=current.next;
    }
    if(current.next==null){
        current.next=newNode;
        newNode.prior=current;
        last=current=newNode;
        numberOfNodes++;
        return this;
    }
    else{
        current.prior.next=newNode;
        newNode.prior=current.prior;
        newNode.next=current;
        current.prior=newNode;
        current=newNode;
        numberOfNodes++;
        return this;
    }
}

我在current.prior.next = newNode;

获得了一个nullpointer异常

有人可以帮我这个吗?

非常感谢!

1 个答案:

答案 0 :(得分:0)

null的元素实际上必须是current.prior如果current为null,那么前面的if会有一个nullpointer。 这意味着您正在查看的节点没有先前的节点。 当您单步执行代码时,这将变得明显。

此外:

  • Java中实际上有一个LinkedList类,为什么不使用那个 代替?
  • 请不要执行current=first=last=newNode;
  • 等链式分配
  • 你真的需要所有这些领域成为会员领域吗?
  • 添加一些JavaDoc或在子方法中划分此方法