我正在尝试为双向链表开发删除函数,但我在 current.prev.next = current.next;
部分不断收到空指针异常。我认为我并不真正理解空指针异常是什么,因为我不知道如何解决这个问题。 log 函数只是我编写的用于写入输出文件的函数,retval[1] 是我要搜索删除的元素。
Node current = head;
while(current != null)
{
if((current.data).compareTo(retval[1]) == 0)
{
if(current.prev == null)
head = current.next;
if(current.next == null)
tail = current.prev;
current.prev.next = current.next;
current.next.prev = current.prev;
current = null;
valid++;
log(line + "\n" + "Sucsessfully Removed \n");
}
else
{
log(line + "\n" + InvalidTransaction + " - Element does not exist \n");
}
current = current.next;
}
我确信这是愚蠢的事情,但我不知道它是什么。任何帮助将不胜感激。
最佳答案
直接替换即可
current.prev.next = current.next;
current.next.prev = current.prev;
与
if(null != current.prev) current.prev.next = current.next;
if(null != current.next) current.next.prev = current.prev;
一旦找到元素,您还需要中断循环。
关于java - 双向链表空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19215801/