删除中间和末尾的节点



我只是想知道以下是否是删除链表中特定位置的节点的正确方法。

So if my "target" node is located between the head and the tail (middle):
1. set a "curr" node equal to the head
2. Iterate using "curr = curr.next" until curr.next = "target"
3. set curr.next = curr.next.next 
If my target is located at the tail I do:
1. set "curr" node equal to the head
2.Iterate until curr.next.next = null 
3. set curr.next = null

我也很难理解如何更改我设置为等于"head"的"curr"节点可以修改与"head"关联的实际链表,而不仅仅是附加到"curr"的链表。

谢谢,我真的需要帮助:)

curr引用链表中的实际链接,而不仅仅是它们的副本,因此修改curr也会修改链表。这是因为所有 java 对象都是通过引用传递的。

顺便说一句,我认为这不是区分最后一项的正确方法,应该是这样的:

  1. 设置一个等于头部的"curr"节点
  2. 使用 "curr = curr.next
  3. " 进行迭代,直到 curr.next .value 等于目标
  4. 如果
  5. 找到目标(如果目标不在列表中,则上一个循环实际上失败)

    3.1. 如果 curr.next

    是最后一项:curr.next = null

    3.2. else curr.next

    = curr.next.next

这种算法更类似于真正的链接列表,因为通常你事先不知道目标链接是否会是最后一个(或者即使它在列表中)。

相关内容

  • 没有找到相关文章

最新更新