从链表中删除包含键的节点

Remove the node that contains the key from the Linked list

我有一个删除方法,找到那个列表中的元素并删除 it.That主题是关于双向链接的 list.Is我的操作在 if 和 else if 语句中为 true 以形成新列表?

public void Remove(int key) {//key = number in the list.
        if (head == null) {
            System.out.println("Empty List..!");
        } else if (key == head.key) {
            head.prev.next = head.next;
            head.next = null;
            noOfNodes--;
        } else if (key == tail.key) {
            tail.next.prev = tail.prev;
            tail.prev = null;
            noOfNodes--;
        } else {
            for (LinkedListNode temp = head; temp.next != null; temp = temp.next) {
                if (temp.key == key) {
                    temp.prev.next = temp.next;
                    temp.next.prev = temp.prev;
                    temp.prev = null;
                    temp.next = null;
                    noOfNodes--;
                }
            }
        }
    }

从您的代码来看,tail 似乎是链表的最后一个节点。

所以,这可能就是问题所在 tail.next.prev = tail.prev;。由于 tail.nextnull,因为 tail 是最后一个元素,当您在 tail.next 上访问 prev 时,它会抛出 NullPointerException.