我只是想知道以下是否是删除链表中特定位置的节点的正确方法。
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 对象都是通过引用传递的。
顺便说一句,我认为这不是区分最后一项的正确方法,应该是这样的:
- 设置一个等于头部的"curr"节点 使用 "curr = curr.next
- " 进行迭代,直到 curr.next .value 等于目标 如果
找到目标(如果目标不在列表中,则上一个循环实际上失败)
3.1. 如果 curr.next是最后一项:curr.next = null
3.2. else curr.next= curr.next.next
这种算法更类似于真正的链接列表,因为通常你事先不知道目标链接是否会是最后一个(或者即使它在列表中)。