如果头结点是要删除的节点,递归写法无法真正删除头结点啊?
来源:2-4 链表与递归
数据结构呆瓜
2023-12-24 19:38:33

老师,后面的课程我也看了,基本明白。
我的问题是。如果头结点是指定删除的节点,这个返回的链表,是一个没有指向头结点的链表。
举个例子:我们传入的数组是head = [5,1,2,3,4,5],val = 5,虽然结果返回的是[1,2,3,4],看似返回的结果删除了所有5,但实际上在内存里的head并没有删除第一个为5的节点,只是有一个指针指向了头结点为5后面的链表,我们输出的时候符合结果而已。这种写法算是删除了节点吗?
1回答
删除掉了。此时原来的 val = 5 的节点不再有任何引用,java 的 gc 会在合适的时机将这个节点的空间回收。
实际上,即使不是头结点,我们的删除逻辑也是如此的,只是让删除的节点不再有其他节点指向而已。如果使用 C++,必须手动写 delete 来删除这个内存空间,但是 java 不需要。
继续加油!:)
相似问题
回答 1