剑指Offer(书):删除链表的节点

题目:在O(1)的时间内删除列表节点。

/**
 * 步骤:
 *  1.检查head与removeNode节点是否为空
 *  2.检查removeNode的后一个节点是否为空,不为空则使用后一个节点的值覆盖removeNode节点。
 *  3.若只有一个节点,则置空。
 *  4.若removeNode为最后一个节点,则只能遍历。
 * @param head
 * @param removeNode
 */
public void removeNode(ListNode head, ListNode removeNode){
    if(head==null || removeNode==null){
        return;
    }
    if(removeNode.next!=null){
        ListNode tempNode = removeNode.next;
        removeNode.val = tempNode.val;
        removeNode.next = tempNode.next;
        tempNode=null;
        return;
    }
    if(removeNode==head){
        head=null;
        removeNode=null;
        return;
    }
    ListNode tempNode = head;
    while (tempNode.next!=removeNode){
        tempNode = tempNode.next;
    }
    tempNode.next=null;
    removeNode=null;
}

 

posted @ 2018-08-07 16:36  liter7  阅读(118)  评论(0编辑  收藏  举报