对于删除任何索引处的节点,我无法理解最后一行代码“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.
`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.