为什么我不能将链表的最后一个节点设置为 null?



我的removeLast方法意味着返回链表中的最后一个元素,然后返回它。这是我目前所看到的:

public int removeLast() {
    int x = getLast();
    removeLast(first);
    return x;
}
private void removeLast(Node n) {
    if (n == null) {
        throw new ListException("Empty list");
    } else {
        if (n.next == null) {
            n = null;
        } else {
            removeLast(n.next);
        }
    }
}

first = LinkedList-class中的实例变量

removeLast()成功返回最后一个数字(getLast()真的做到了,然后removeLast(节点n)应该实际删除它。但是,这部分不起作用

您没有正确设置链表的最后一个节点为null。正如@Kevin Esche所说,
n = nulln设置为空,而不是链表的节点。在我的代码中,我使用link引用来引用节点,并将其设置为null

应该可以。

public int removeLast(Node n){  //returns and removes the last node
    int x = getLast();
    if(n == start && n.link == null) //list has only last node
        start = null;
    else {
        if(n.link.link == null)
            n.link = null;
        else
            x = removeLast(n.link);
    }
    return x;
}

当从某处调用removeLast()方法时,传递startfirst作为参数。

main()调用removeLast()

下面是一个从主方法调用removeLast()方法的例子。

public static void main(String[] args){
    LinkedList ll = new LinkedList();
    /* add the nodes */
    System.out.println("The original LinkedList is");
    /* display the LinkedList */
    System.out.println("The last node is "+ll.removeLast(ll.start));
    System.out.println("After removing the last node, LinkedList is");
    /* display the current LinkedList */
}

相关内容

  • 没有找到相关文章

最新更新