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



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

public Node deleteFirst()
    {
        Node temp = first;
        if(first.next==null)
            last = null;
        else
            first.next.previous = null;
            first = first.next;
        return temp;
    }

如果list只包含一个元素,则将last的引用设置为null。我的问题是,为什么我们不设置第一个引用为空?这有什么区别吗?

您缺少括号

这个语句在任何情况下都会被执行,因为它在if/else

之外
first = first.next;

这不是python

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

除了缺少括号之外,这个方法还有几个问题。

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;
    }

相关内容

  • 没有找到相关文章

最新更新