双链表空指针异常

时间:2013-10-07 01:14:57

标签: java linked-list

我正在尝试为双向链表制作删除函数,但我在current.prev.next = current.next;部分继续得到Null Pointer异常。我不认为我真的明白空指针异常是什么,因为我不知道如何解决这个问题。 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;
        }

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

2 个答案:

答案 0 :(得分: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;

一旦找到元素,你也需要打破循环。

答案 1 :(得分:0)

NullPointerException表示您尝试对null的对象执行某些操作。由于current肯定不是null,因此current.prev必须是null。从那里开始。