链表中根据索引删除的问题

来源:4-5 从链表中删除元素

慕雪9224395

2018-04-24

Node retNode = prev.next;

prev.next = retNode.next;

retNode.next = null;

老师,最后一行代码是不是有问题,我觉得应该是retNode = null;
因为retNode是要删除的那个节点,所以是retNode = null,而不是把它的next节点设为null
不知道是不是我哪里理解错了


写回答

1回答

liuyubobobo

2018-04-24

retNode是要删除的节点,现在这个节点的next还连接着原链表,所以在最后一行将retNode的next指向null,即和原链表脱离关系。请再看一下这一小节2:30处的动画内容,这里这个retNode就是PPT中的delNode。


在脱离关系后,我们不需要手动给retNode设置为空。retNode本身是这个函数中创建的临时变量,函数生命周期结束后,这个变量的生存周期也结束了。至于他所指向的空间,由于不在和其他内存空间有任何关联,会由Java的垃圾回收自动处理:)

1
1
慕雪9224395
非常感谢!明白了
2018-04-24
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程