prev.next = prev.next.next和新建一个delNode删除的区别问题

来源:5-1 Leetcode中和链表相关的问题

kritons

2018-04-27

可能因为delNode需要新建对象的原因,所以后一种方法比前一种方法要慢一点,但是前一种方法我们需要删除的节点依然通过next连在了链表上,应该不会被回收的,这样会不会导致当基数很大的时候,大量的内存空间会被浪费?出于综合性能考虑,到底用哪一种比较好?

写回答

1回答

liuyubobobo

2018-04-27

我个人倾向第二种方式,显示地进行删除。所以在课程中实现的我们自己的链表类,我使用的是第二种方式。


但是,第一种方式没有任何错误!prev.next = prev.next.next后,原来的prev.next节点不再可达,gc是可以回收这个节点的!当链表的生存周期结束以后,所有节点都可以被正确的回收,只是回收可能来的晚了一些。


这两种方式都是正确的方式。我个人写代码比较强调语意性,所以倾向第二种写法:)

2
2
liuyubobobo
回复
kritons
是的:)
2018-04-28
共2条回复

玩转数据结构

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

6221 学习 · 1704 问题

查看课程