SavantStart
2015-04-24 07:50
采纳率: 55.6%
浏览 2.7k
已采纳

删除链表节点(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;
        }
    }
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • blownewbee 2015-04-24 09:51
    已采纳

    没问题,因为java不是通过引用计数的方式而是从根对象遍历的方式进行垃圾回收的,只要你设置null了,那些节点都成死对象了,不管它们相互之间怎么引用,都会被回收的。

    点赞 评论
  • bdmh 2015-04-24 08:01

    如果你是通过new分配的空间,就记得delete一下,然后置为null,c++没有垃圾回收

    点赞 评论

相关推荐 更多相似问题