在O(1)时间删除链表结点

来源:互联网 发布:珀莱雅淘宝店真假 编辑:程序博客网 时间:2024/06/06 07:39

给定单向链表头指针和一个节点指针,在O(1)时间删除链表结点


/*    对于删除节点,我们普通的思路就是让该结点的前一个节点指向改节点的下一个节点    */    public void delete(Node head, Node toDelete){        if(toDelete == null){            return ;        }        if(toDelete.next != null){//删除的节点不是尾节点            toDelete.val = toDelete.next.val;            toDelete.next = toDelete.next.next;        }else if(head == toDelete){//链表只有一个节点,删除头结点也是尾节点            head = null;        }else{ //删除的节点是尾节点的情况            Node node = head;            while(node.next != toDelete){//找到倒数第二个节点                node = node.next;            }            node.next = null;        }    }


原创粉丝点击