SO 如果我想编写方法 Removelast(),这会起作用吗? 这是针对链接列表DS 我可以有一个没有其他的 if 吗?
public E removeLast() {
E result;
if(this.isEmpty())
{
System.out.println("No data present");
return null; //over here
}
result = tail.data;
if(this.size() == 1)
{
head= null;
tail= null;
}
else
{
Node<E> current;
current = head;
while(current.next != tail)
current= current.next;
tail = current;
tail.next=null;
}
return result;
}
使用 if 而不带 else 是正确的。请注意,那里有不同的编程风格。你可能想看看这本经典的书:代码完成:软件构建的实用手册,第二版。我自己使用 if 只是为了对我没有很多顶级独立 ifs 的程序流进行分区(而是使用"else if")。
您的代码中也有问题。如果你的列表是空的(size() == 0),你尝试遍历节点,这应该给你一个空指针异常。
此外,如果您有一个链表,其中每个节点都存储指向前一个节点的链接,则可以通过执行以下操作来删除尾部:
`Node<E> toRemove = tail;
tail = toRemove.previous;
if(tail == null)
head = null;
toRemove.previous = null;`