对于删除任何索引处的节点,我无法理解最后一行代码“temp.next = t;”

for deletion of a node at any index ,i'm not able to understand last line of code " temp.next = t;"

`static class 节点 { E数据; 下一个节点;

    public Node(E data) {
        this.data = data;
        next = null;
    }
}
        public void deleteAtIndex(int index){     
        Node temp = head;
        for (int i = 1; i < index-1 ; i++) {
            temp=temp.next;
        }
        Node t = temp.next.next;
        temp.next = t;
       }`  

为什么要在 java 中编写该代码,因为提到我们使用“temp.next = t;”至 "Unlink the deleted node from list"。如果删除最后一行,则代码未提供所需的输出。

使用 temp.next = next 您正在更新对删除旧节点的下一个节点的引用。您还可以在 LinkedList 实现中看到:#unlink(Node)

让我给你举一个例子 -

考虑 5->6->10->15。 假设您要删除 10.

逻辑上你想找到 6 并使其指向 15。

第一步这样做需要您获取指向您的对象(我们要删除的对象)的节点

 for (int i = 1; i < index-1 ; i++) {
            temp=temp.next;
 }

在这个 for 循环中,我们简单地定位指向我们要删除的对象的节点。


    Node t = temp.next.next;   //15
    temp.next = t; // Point 6 to 15

我们将“6”的下一个节点设置为我们要移除的对象的下一个节点。 为什么? 因为我们希望它是: 5->6->15

您的 t 参数包含值为“15”的节点。

温度 为“6”。

Temp.next改前指向10,改后指向15.