prev.next = prev.next.next和新建一个delNode删除的区别问题
来源:5-1 Leetcode中和链表相关的问题
kritons
2018-04-27
可能因为delNode需要新建对象的原因,所以后一种方法比前一种方法要慢一点,但是前一种方法我们需要删除的节点依然通过next连在了链表上,应该不会被回收的,这样会不会导致当基数很大的时候,大量的内存空间会被浪费?出于综合性能考虑,到底用哪一种比较好?
写回答
1回答
-
我个人倾向第二种方式,显示地进行删除。所以在课程中实现的我们自己的链表类,我使用的是第二种方式。
但是,第一种方式没有任何错误!prev.next = prev.next.next后,原来的prev.next节点不再可达,gc是可以回收这个节点的!当链表的生存周期结束以后,所有节点都可以被正确的回收,只是回收可能来的晚了一些。
这两种方式都是正确的方式。我个人写代码比较强调语意性,所以倾向第二种写法:)
222018-04-28
相似问题