关于链表的remove操作
来源:1-5 从链表中删除元素
Corrots521
2020-07-28 11:02:10
波波老师,链表的remove这里,对于删除的节点,你的代码中只是将delNode.next = NULL,最后将delNode.e作为返回值返回,这里是不是可以先将delNode.e保存起来,然后将delNode整个置空呢?这样是不是更利于gc呢?
下面是我用go实现的:
func (l *LinkedList) Remove(index int) interface{} {
if index < 0 || index >= l.size {
log.Fatal("Remove failed, illegal index")
}
prev := l.dummyHead
for i := 0; i < index; i++ {
prev = prev.next
}
delNode := prev.next
ret := delNode.e
prev.next = delNode.next
delNode = nil
l.size--
return ret
}1回答
没有问题的。实际上, delNode.next = NULL 不写,gc 都是可以正确回收这个空间的。在这里写上 delNode.next = NULL,只是和 ppt 动画中的 delNode 节点和整个链表断开对应上。课程后续解决 Leetcode 的题目中,我将不再写这句话:)
感谢你的分享,继续加油!:)
相似问题