Java 如何从链表中删除指定的节点?

Java 如何从链表中删除指定的节点?,java,singly-linked-list,Java,Singly Linked List,我制作了一个remove方法,可以从单链表中移除一个对象 到目前为止,该方法删除第一个节点和第二个节点没有问题。删除第三个节点并继续删除时,该方法将删除指定节点和头部节点之间的所有内容。我的问题是如何让我的方法删除指定的节点而不是之前的所有节点 我知道我需要保留对前一个节点的引用,以便将其下一个节点分配给下一个节点的指定节点。这将闭合间隙并删除节点。我理解逻辑,但似乎无法实现它 public class List_test{ public Node head; public Li

我制作了一个remove方法,可以从单链表中移除一个对象

到目前为止,该方法删除第一个节点和第二个节点没有问题。删除第三个节点并继续删除时,该方法将删除指定节点和头部节点之间的所有内容。我的问题是如何让我的方法删除指定的节点而不是之前的所有节点

我知道我需要保留对前一个节点的引用,以便将其下一个节点分配给下一个节点的指定节点。这将闭合间隙并删除节点。我理解逻辑,但似乎无法实现它

public class List_test{
    public Node head;
    public List(){
        head = null;
    }
    public List(Node head_) {
        this.head = head_;
        Node ref = head;
    }
    public void remove(Node node) {
        Node ref= head;
        if (ref.equals(node)) {
            head = head.next;
            return;
        }
        while (ref != null) {
            if (ref.equals(node)) {
                head.next = node.next;
            }
            ref = ref.next;
        }
    }
public static void main(String[] args) {
    new List_test();
}

要删除节点,为什么要更改头指针?您应该使用上一个节点并将其指向要删除的节点的下一个节点。

要删除节点,为什么要更改头指针?您应该使用上一个节点,并将其指向要删除的节点的下一个节点。

我认为本页对此主题有很好的解释:

我认为这一页对这个主题有很好的解释:

我理解,但如何引用上一个节点?必须有一个变量才能保存该节点。例如,在while循环开始之前,previousNode=null,因为ref指向head,并且没有前一个节点。在循环中,当您执行以下操作时,
ref=ref.next
将previousNode设置为ref,这样您就可以为每个节点遍历以前的节点。我知道,但是我如何引用以前的节点?您必须有一个变量来保存该值。例如,在while循环开始之前,previousNode=null,因为ref指向head,并且没有前一个节点。在循环中,当您执行以下操作时,
ref=ref.next
将previousNode设置为ref,这样您就可以遍历每个节点的前一个节点