我曾经遇到过这样做的问题:
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节点,因为我们不想修改起始节点指针,因为我们总是需要链表的起始指针,所以我们创建了一个临时指针,而不是修改起始指针。