如果头结点是要删除的节点,递归写法无法真正删除头结点啊?

来源:2-4 链表与递归

数据结构呆瓜

2023-12-24 19:38:33

https://img1.sycdn.imooc.com/climg/658815e70970b3f009470563.jpg

老师,后面的课程我也看了,基本明白。

    我的问题是。如果头结点是指定删除的节点,这个返回的链表,是一个没有指向头结点的链表。

    举个例子:我们传入的数组是head = [5,1,2,3,4,5],val = 5,虽然结果返回的是[1,2,3,4],看似返回的结果删除了所有5,但实际上在内存里的head并没有删除第一个为5的节点,只是有一个指针指向了头结点为5后面的链表,我们输出的时候符合结果而已。这种写法算是删除了节点吗?

写回答

1回答

liuyubobobo

2023-12-25

删除掉了。此时原来的 val = 5 的节点不再有任何引用,java 的 gc 会在合适的时机将这个节点的空间回收。


实际上,即使不是头结点,我们的删除逻辑也是如此的,只是让删除的节点不再有其他节点指向而已。如果使用 C++,必须手动写 delete 来删除这个内存空间,但是 java 不需要。


继续加油!:)

0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2638 学习 · 1091 问题

查看课程