java - 删除单链表中的最后一个元素

标签 java methods nodes singly-linked-list

我正在制作一个简单的链表,并且正在尝试实现一种允许我删除链表的最后一个节点的方法。在某些时候,我的方法是错误的,我不确定错误在哪里以及如何修复它。这是代码!

public Nodo deleteEnd() {

    Nodo aux;
    if (head == null) {
        throw new NoSuchElementException("Element cant be deleted");

    } else {

        aux = head;

        while (aux.next.next != null) {
            aux = aux.next;
        }

        size--;
    }
    return aux;
}

最佳答案

您需要将最后但并非最不重要的节点的next分配给null:

if(head.next == null) {
    // head is last!
    head = null;
    size = 0;
} else {
    previous = head;
    current = head.next;
    // while current is not last, keep going
    while(current.next != null) {
       previous = current;
       current = current.next;
    }
    // current is now on last!
    previous.next = null;
    size--;
}

关于java - 删除单链表中的最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29783507/

相关文章:

java - 在Java程序中使用结果集

ruby - 调用与 Gem 中的方法链接的参数时,yield block 的返回值是多少,用#each 迭代?

C# - 扩展方法示例

c - 结构上的节点等于节点是否会初始化结构属性的其余部分?

Java 打开并读取目录中的文件

java - 即将被收集时如何获取java对象本身

java - 类型为Printwriter的方法println(boolean)不适用于参数(void)

c++ - 删除带有数据指针的节点?

java - JAVA队列实现构造函数错误

java - 如何在java中写入新的文本文件