删除单链表的最后一个元素不起作用

时间:2013-04-06 18:45:48

标签: java list element

我有一个单链接列表,我只想删除该列表的最后一个元素。我查了一下,但它不起作用。我不知道为什么。

查看我的代码(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);
    }
}

1 个答案:

答案 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;
}