以下代码删除双向链表中的第一个节点。
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?它甚至会有所作为吗?
答案 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;
}