【问题标题】:Doubly Linked List Null Pointer Exception双向链表空指针异常
【发布时间】:2013-10-07 01:14:57
【问题描述】:

我正在尝试为双向链表处理删除函数,但我在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;
        }

我确定这很愚蠢,但我不知道它是什么。任何帮助将不胜感激。

【问题讨论】:

    标签: java linked-list


    【解决方案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;
    

    而且你还需要在找到元素后中断循环。

    【讨论】:

      【解决方案2】:

      NullPointerException 表示您尝试对 null 的对象执行某些操作。既然current 肯定不是null,那么current.prev 一定是null。从那里去。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 2013-11-15
        • 1970-01-01
        • 2016-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多