下面的代码删除双链表中的第一个节点。
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;
}