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

时间:2016-05-05 03:52:40

标签: java singly-linked-list

我做了一个删除方法,从单个链表中删除一个对象。

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

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

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();
}

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我认为此页面对此主题有很好的解释: deleting node in linked list c/c++, java, python