//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++没有垃圾回收