java - 搜索并从链表中删除节点

标签 java data-structures linked-list

我使用链表而不使用集合类进行数据结构练习。 我想在将元素值传递给函数后从链表中删除一个元素

这是我编写的函数。

public boolean remove(String s)
    {
        if(head.getName().equalsIgnoreCase(s))
        {
            head = head.getNext();
            return true;
        }

        else
        {
            Node p =head;
            Node current=p.getNext();

            while(true) {
                if(current == null || current.getName().equals(s)) {
                    break;
                }
                p = current;
                current = current.getNext();
            }
            if (current == null)
            {
                p.setNext(current.getNext());
                return true;
            }
        }
        return false;
    }

我使用节点 p 来存储前一个节点和当前节点。

代码落在 return false 部分,列表中没有任何变化。此外,我在 p.setNext(current.getNext( ))在这里。

请让我知道我在哪里犯了错误。

最佳答案

关于空指针异常,这应该敲响警钟

if (current == null)
{
    p.setNext(current.getNext());
    return true;
}

当前为空,您正尝试从中调用方法。

此外,您似乎没有处理特殊情况,例如列表为空或只有一个元素。

关于java - 搜索并从链表中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733919/

相关文章:

java - 主线程在无限循环中停止

java - 从 Java 中的纪元时间返回 ISO-8601 时间格式(以天为单位)

algorithm - 计算 DFA 接受的字符串数的最佳算法

java - 从链表中删除相同的元素

java - 使用 iText 将 HTML 转换为 PDF

java - 使用 Java 正则表达式进行单词提取和拆分

mysql - 将 JSON 存储为键值对

data-structures - 在现代架构上,Tries 仍然是一个好主意吗?

java - 确定在列表末尾 append 值的复杂性

c - 函数不评估用户输入