我最近在youtube上观看了一系列LinkedList视频,如下图所示:
视频网址:https://www.youtube.com/watch?v=2RwWsHePdr8&index=11&list=PL6Zs6LgrJj3tWQfE6HK4JaX3wN96yhkD3
不,我想删除号码15(位置3),所以这里是代码:
if(position ==1) {
ListNode temp = head;
head = head.next;
temp.next = null;
return temp;
}else {
ListNode previous = head;
int count =1;
while(count < position -1) {
previous = previous.next;
count++;
}
ListNode current = previous.next;
previous.next = current.next;
current.next = null;
return current;
}
我有一个问题让我感到困惑:在图片中:| 10 | _ | - &gt; | 8 | __ | 如果我输入:“head.next”,是否意味着8?或者它意味着10?
旁边的节点空间因为在我透露的代码中,我无法理解:&#34;为什么最后的代码是“current.next = null; 』&#34?; 我认为「current.next」指的是11号? 如果“current.next”表示15旁边的节点,那么前面的代码“previous.next = current.next”是否应该更改为“previous.next = current.next.next”?这意味着「current.next.next」可以参考数字11
提前致谢!!
更新:head.next和head.next.next是这样的吗? enter image description here
答案 0 :(得分:0)
下一个字指向下一个节点,包括地址(系统中的内存地址)和值(例如15)
如果您知道需要删除值为15的节点,则可以遍历数组并绑定此节点的指针&#34; next&#34;到节点,那15正在显示
ListNode temp = head;
while (temp.next != null){
if (temp.next.value == 15):
ListNode nodeWithValue15 = temp.next;
temp.next = nodeWithValue15.next;
// after rebinding address to your previous node, you can delete node with value 15
nodeWithValue15 = null;
temp = temp.next;