【问题标题】:Deleting node in the middle and at the end删除中间和末尾的节点
【发布时间】:2016-02-21 21:22:33
【问题描述】:

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

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”的链表。

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

【问题讨论】:

    标签: java pointers linked-list nodes


    【解决方案1】:

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

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

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

      3.1。如果 curr.next 是最后一项:curr.next = null

      3.2。 else curr.next = curr.next.next

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

    【讨论】:

    • 稍作修改(检查 curr.next.value 而不是 curr.next)它会,但前提是目标存在于列表中。
    猜你喜欢
    • 2015-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多