为什么我们需要一个临时变量来从链表中删除一个节点?

时间:2013-08-13 05:03:49

标签: java linked-list

我曾遇到过这样做的问题:

previous是当前的节点。 current是我们正在查看的当前节点。 这是prev.next指向当前后的元素。

prev.next = current.next;

然而,我忘记了为什么这不起作用而我们必须这样做:

Node temp = current.next;
prev.next = temp;
current = temp;

2 个答案:

答案 0 :(得分:0)

  

为什么我们需要一个临时变量来从链表中删除节点

因为从元素中删除引用

您不需要像下面的代码那样使用临时变量来释放从当前到下一个的链接。

prev.next = current.next;
current.next = null; // release this link
current = null; // optional 

删除后,我们:current未被上一个节点引用,current.nextnull

因为linkedList是一个列表,其中每个元素都有一个指向下一个元素的链接(实际上,它还有一个指向前一个元素的链接)。

因此,与ArrayList相比,从列表中删除元素非常容易,其中元素存储在数组中,删除元素意味着在数组之后移动元素中的每个元素。

  

在计算机科学中,链表是由一组节点组成的数据结构,这些节点一起表示序列。在最简单的形式下,每个节点由数据和到序列中下一个节点的引用(换句话说,链接)组成;更复杂的变体添加其他链接。该结构允许从序列中的任何位置有效插入或移除元素。

请参阅此处Linked List

答案 1 :(得分:0)

我们在delete方法中创建Temp节点,因为我们不想修改起始节点指针,因为我们总是需要链表的起始指针,因此我们不是修改起始指针而是创建一个临时指针。