问题描述
- 删除链表节点(java)
-
//deleteNode() O(1)= ((n-1)*O(1) + O(n)/2) static void deleteNode(Nodes head,Nodes x){ if(head == null || x == null) return ; //不是尾节点 if(x.next!=null){ Nodes temp = x.next; x.next = temp.next; x.data = temp.data; } //只有一个节点,头结点(尾节点) else if(head == x){ head = null; }else { //**尾节点:此处是删除尾节点的,不去遍历找待删除节点的前驱了,直接让应用null,让jvm垃圾回收器去回收节点,这样可以不????** x = null; } } }
解决方案
没问题,因为java不是通过引用计数的方式而是从根对象遍历的方式进行垃圾回收的,只要你设置null了,那些节点都成死对象了,不管它们相互之间怎么引用,都会被回收的。
解决方案二:
如果你是通过new分配的空间,就记得delete一下,然后置为null,c++没有垃圾回收
时间: 2024-09-19 08:19:51