Java 删除双链接列表中的第一个节点
以下代码删除双链接列表中的第一个节点Java 删除双链接列表中的第一个节点,java,data-structures,linked-list,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; } 如果列
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。我的问题是,我们为什么不将first的引用设置为null?这会有什么不同吗?您缺少括号 此语句在任何情况下都会执行,因为它位于if/else之外
first = first.next;
这不是python
你缺少括号 此语句在任何情况下都会执行,因为它位于if/else之外
first = first.next;
这不是python
除了缺少括号外,这种方法还有几个问题
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;
}
除了缺少括号外,这种方法还有几个问题
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;
}
我正在使用java的数据结构和算法,书中没有括号。但我想那是因为他们只是在示威。丁新泽的评论。我总是用括号,包括一行。好的,我知道了,很抱歉这个错误。但你们中的一个能告诉我为什么last设置为null而不是first吗?last设置为null是因为若你们从只有一个元素的链表中删除第一个元素,那个么就并没有last和first,所以
null
是,但你们不应该也将first设置为null吗?ERAN发布的答案还表明我正在使用java的数据结构和算法,而书中没有括号。但我想那是因为他们只是在示威。丁新泽的评论。我总是用括号,包括一行。好的,我知道了,很抱歉这个错误。但你们中的一个能告诉我为什么last设置为null而不是first吗?last设置为null是因为若你们从只有一个元素的链表中删除第一个元素,那个么就并没有last和first,所以null
是,但你们不应该也将first设置为null吗?ERAN发布的答案也表明,如果列表中只有一个元素,那么必须将最后一个和第一个引用都设置为null?我的书只将last设置为null,这就是为什么我感到困惑,因为它对我来说毫无意义。这本书的完整标题和作者是什么?@user2733436如果你不将first
设置为null,你可以调用deleteFirst
来获得一个具有无限多个节点的列表,它将始终返回相同的节点。@Greycon它是Robert Lafore(见第227页)编写的Java第二版中的数据结构和算法,现在只需一品脱,明天我们将看到它。我同意@EranSo的观点,所以你建议如果列表中只有一个元素,那么必须将最后一个和第一个引用都设置为null?我的书只将last设置为null,这就是为什么我感到困惑,因为它对我来说毫无意义。这本书的完整标题和作者是什么?@user2733436如果你不将first
设置为null,你可以调用deleteFirst
来获得一个具有无限多个节点的列表,它将始终返回相同的节点。@Greycon它是Robert Lafore(见第227页)编写的Java第二版中的数据结构和算法,现在只需一品脱,明天我们将看到它。我同意埃兰的观点