java - 从 LinkedList 中删除特定元素....?

标签 java algorithm nullpointerexception linked-list

我试图从链表中删除一个特定的元素,但是我得到空指针异常。任何人都可以修复我下面提到的代码......

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.nexttemp.previous 引用为左值之前,您应该检查它们是否为 null 否则将抛出 NullPointerException

希望对您有所帮助!

关于java - 从 LinkedList 中删除特定元素....?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626437/

相关文章:

java - 在 Java 8 中延迟返回第一个非空列表

java - LinkedList 超出内存限制

java - 什么是NullPointerException,我该如何解决?

android - 为什么 findViewById 对于 CardView 返回 null?

java - 向服务器java发送请求

java - Android:显示多个街景(Google Maps Api)

javascript - 拆分数组中的字符串以创建菜单和子菜单数据结构的算法

java - 为什么我在调用 JasperFillManager 时在 java.lang.Class.isAssignableFrom(Native Method) 处得到 java.lang.NullPointerException?

javascript - 渲染多色分段进度条

c++ - 使用之字形扫描将 8x8 矩阵转换为展平 vector