剑指Offer18:删除链表的节点

思路:一般删除链表的节点,通过O(n)遍历到删除链表的前一个节点,然后将前一个节点的next指向删除节点的next,再删除需要删除的节点。

但是,如果删除的节点指针知道,那么,拿到删除节点的下一节点v,将v的值复制到当前删除节点的值,再让当前删除节点的Next指向v的next,这个方法很惊艳

同时需要判断当前删除的是不是头结点和尾节点重合,第二种情况是删除的节点处于尾节点,任就需要遍历到删除节点的前一节点。需要O(n)的时间复杂度.

那么伪代码是

               if(不是尾节点){

     {           用v节点的方法}

    else if(头节点){

               删除头节点    }

    else{

               遍历到尾节点的前一节点开始删除。

            }

猜你喜欢

转载自blog.csdn.net/weixin_39137699/article/details/89418563