删除双向链表中的第一个节点

时间:2014-08-19 20:03:11

标签: java data-structures linked-list

以下代码删除双向链表中的第一个节点。

public Node deleteFirst()
    {
        Node temp = first;

        if(first.next==null)
            last = null;
        else
            first.next.previous = null;
            first = first.next;

        return temp;
    }

如果列表只包含1个元素,我们将last的引用设置为null。我的问题是我们怎么不先将引用设置为null?它甚至会有所作为吗?

2 个答案:

答案 0 :(得分:3)

你缺少括号

此声明将在任何情况下执行,因为它在if / else

之外
first = first.next;

这不是python

else {
   first.next.previous = null;
   first = first.next;
}

答案 1 :(得分:3)

除了缺少括号外,此方法存在一些问题。

public Node deleteFirst()
    {
        Node temp = first;

        if (first != null) { // list might be empty
            if(first.next==null) {
                last = null;
                first = null; // you must remove the first element if it's the 
                              // only one, otherwise the next call to deleteFirst
                              // will return the same Node again
            } else {
                first.next.previous = null;
                first = first.next;
            }
        }
        return temp;

    }