我正在尝试为双向链表制作删除函数,但我在current.prev.next = current.next;
部分继续得到Null Pointer异常。我不认为我真的明白空指针异常是什么,因为我不知道如何解决这个问题。 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;
}
我确定这是愚蠢的,但我不知道它是什么。任何帮助将不胜感激。
答案 0 :(得分:1)
只需替换
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;
一旦找到元素,你也需要打破循环。
答案 1 :(得分:0)
NullPointerException
表示您尝试对null
的对象执行某些操作。由于current
肯定不是null
,因此current.prev
必须是null
。从那里开始。