首页 > 解决方案 > 从链表中搜索并删除一个节点

问题描述

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

这是我写的函数。

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())中收到空指针异常警告。

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

标签: javadata-structureslinked-list

解决方案


关于空指针异常,这应该响起

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

current为 null 并且您正在尝试从中调用方法。

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


推荐阅读