我曾经遇到过这样做的问题:
previous
是当前的前一个节点。current
是我们正在查看的当前节点。这是prev.next
指向当前元素之后的元素。
prev.next = current.next;
但是,我忘记了为什么这不起作用,我们必须这样做:
Node temp = current.next;
prev.next = temp;
current = temp;
我曾经遇到过这样做的问题:
previous
是当前的前一个节点。current
是我们正在查看的当前节点。这是prev.next
指向当前元素之后的元素。
prev.next = current.next;
但是,我忘记了为什么这不起作用,我们必须这样做:
Node temp = current.next;
prev.next = temp;
current = temp;
为什么我们需要一个临时变量来从链表中删除一个节点
因为当您从元素中删除引用时
您不需要像下面的代码中那样的临时变量来释放从当前到下一个的链接。
prev.next = current.next;
current.next = null; // release this link
current = null; // optional
删除后我们有:current
没有被前一个节点引用并且current.next
是null
。
因为linkedList是一个列表,其中每个元素都有一个到下一个元素的链接(实际上,它也有一个到前一个元素的链接)。
因此,与将元素存储在数组中的 ArrayList 相比,从列表中删除元素非常容易,删除元素意味着将数组中的每个元素移到其后。
在计算机科学中,链表是由一组节点组成的数据结构,这些节点一起表示一个序列。在最简单的形式下,每个节点由一个数据和一个指向序列中下一个节点的引用(换句话说,一个链接)组成;更复杂的变体添加额外的链接。这种结构允许从序列中的任何位置有效地插入或删除元素。
参考这里链接列表
我们在 delete 方法中创建 Temp 节点是因为我们不想修改起始节点指针,因为我们总是需要链表的起始指针,所以我们不修改起始指针,而是创建一个临时指针。