java - 双向链表空指针异常

标签 java linked-list

我正在尝试为双向链表开发删除函数,但我在 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/

相关文章:

java - 在 BlueJ 中正确导入类

c - SICP对指针的描述

java - 找不到具有不同 buildvariant 的包名称 "...."的匹配客户端

java - 将字符串文本提取到另一个字符串中

java - 如何进行广度优先搜索

python - 如何在 Kotlin 中正确反转链表?

c++ - 通过链接到自身的深度优先搜索节点进行注入(inject)。 C++

c - c中的链接列表指针转换异常。指针从不存在的位置获取地址

java - Java 中的哪个 API 用于文件读取以获得最佳性能?

java - Android Studio : Create a for-loop for strings