有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何删除循环单链表上的最后一个节点

我在删除最后一个节点时遇到问题。它将删除倒数第二个而不是最后一个

public Node removeLast() {
    if (isEmpty()) {
        throw new NoSuchElementException();
    }
    Node temp = first.next;
    if (last.next == last) {
        first = null;
    } else {
        first.next = temp.next;
    }
    temp.next = null;
    length--;
    return temp;

}

“第一个”是最后一个节点。当我宣布的时候。我将最后一个节点指向最后一个整数,将第一个节点指向第四个整数。(我有5个整数)。如果你需要我的全部代码。请尽管问。谢谢


共 (1) 个答案

  1. # 1 楼答案

    要删除最后一个节点,我们需要对下一个到最后一个节点的引用。通过这种方式,我们可以简单地使“下一个到最后一个”节点指向“第一个”,并将“最后一个”节点更新为“下一个到最后一个”节点。Java垃圾收集将处理剩下的部分

    public Node removeLast() {
        if (isEmpty()) {
            throw new NoSuchElementException();
        }
        Node temp2 = first;
        Node temp = first.next;
        while(temp.next != null) {temp2 = temp; temp = temp.next;}
        //now temp 2 should be pointing to the SECOND LAST node 
        temp2.next = first; //now the second last node points at the first 
        last = temp2; //our new last node
        /*Take care of counters and returns here*/
    
    }
    

    这段代码不会编译,并且会在列表长度为1时抛出错误,您需要进行一些边缘大小写检查,但这应该可以让您开始

    我们不能只删除最后一个节点的原因是我们需要维护列表的循环属性