我试图从链表中删除一个特定的元素,但是我得到空指针异常。任何人都可以修复我下面提到的代码......
public void deleteElement(T num)
{
Node<T> ele = new Node<T>(num);
if(head == null){
System.out.println("Underflow");
return;
}
Node<T> temp = head;
while(temp != null)
{
if(temp.data == num){
temp.previous.next = temp.next;
return;
}
else
temp = temp.next;
}
size--;
}
最佳答案
你应该像这样在你的 while 循环中修改:
while(temp != null)
{
if(temp.data == num) {
if(temp.previous != null) {
temp.previous.next = temp.next;
}
// you have to link-up the next's previous with temp's previous too
if(temp.next != null) {
temp.next.previous = temp.previous;
}
temp = null; // to deference the node and let garbage collector to delete/clear this node
break; // don't return here otherwise size-- won't execute
}
temp = temp.next;
}
在将 temp.next
和 temp.previous
引用为左值之前,您应该检查它们是否为 null
否则将抛出 NullPointerException
。
希望对您有所帮助!
关于java - 从 LinkedList 中删除特定元素....?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626437/