0

我正在尝试为双向链表处理删除函数,但我不断收到空指针异常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;
        }

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

4

2 回答 2

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;

一旦找到元素,您还需要打破循环。

于 2013-10-07T01:20:21.270 回答
0

ANullPointerException表示您试图对null. 既然current肯定不是null,那current.prev一定是null。从那里去。

于 2013-10-07T01:19:12.420 回答