我有一个单链接列表,我只想删除该列表的最后一个元素。我查了一下,但它不起作用。我不知道为什么。
查看我的代码(P.S。我想要一个递归解决方案):
// Delete Last Element
public void deleteLast(){
if(head == null){
return;
}
if(head.next == null){
head = null;
}else{
deleteLast(head.next);
}
}
private void deleteLast(ListElement head){
if(head == null){
return;
}
if(head.next == null){
head = null;
}else{
deleteLast(head.next);
}
}
答案 0 :(得分:1)
head = null
只是将本地head
变量设置为null
,而不是它引用的链接列表中的对象,您需要执行以下操作:
private void deleteLast(ListElement head)
{
if (head.next.next == null)
head.next = null;
else
deleteLast(head.next);
}
你会注意到我也删除了你的if (head == null)
支票,我相信这不是必需的。
编辑:另一种方法:
// returns whether we should delete the passed in parameter
private boolean deleteLast(ListElement head)
{
if (head.next == null)
return true;
else if (deleteLast(head.next))
head.next = null;
return false;
}