我做了一个删除方法,从单个链表中删除一个对象。
到目前为止,该方法删除了第一个节点和第二个节点没有问题。删除第三个节点时,该方法将删除指定节点和头节点之间的所有内容。我的问题是如何让我的方法删除指定的节点而不是之前的所有内容?
我知道我需要保留对前一个节点的引用,以便将其下一个节点分配给下一个节点的指定节点。这将缩小差距并删除节点。我理解逻辑但似乎无法实现它。
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();
}
答案 0 :(得分:1)
要删除节点,为什么要更改头指针?您应该使用上一个节点并将其指向要删除的节点的下一个节点。
答案 1 :(得分:1)
我认为此页面对此主题有很好的解释: deleting node in linked list c/c++, java, python