Young87

SmartCat's Blog

So happy to code my life!

游戏开发交流QQ群号60398951

当前位置:首页 >跨站数据测试

经典面试题: java实现单链表翻转

经典面试题: java实现单链表翻转

思路分析:

单链表的翻转,我们抽象来看,其实就是将每个节点的next 指向他的前一个节点,那么我们从第一个节点开始翻转,将第一个节点的next指向null,把第二个节点的next 指向第一个节点,第三个节点的next指向 第二个节点。。。。。

这里需要使用三个辅助节点: pre :翻转节点的前一个节点,cur: 当前需要翻转的节点,next:翻转节点的下个节点

public class ListReverse {
    public ListNode reverseList(ListNode head) {

        //初始化pre为null,让第一个节点首先指向null
        ListNode pre = null;
        //cur就是我们当前需要翻转的节点,将该节点的next指向他的前一个节点
        ListNode cur = head;

        while (cur !=null){
            //需要先将当前的节点的next拿到,否则我们直接翻转的话
            //就让后面的节点断开练习了
            ListNode next = cur.next;
            //进行翻转
            cur.next = pre;
            //上面的步骤指向完,一个节点翻转完成,我们需要为
            //下一次的翻转做准备,将pre指向往后移一位
            pre = cur;
            //让cur指向next,下一次就要翻转你了
            cur = next;
        }
        return pre;
    }

}



 class ListNode {
    int val;
    ListNode next;

    ListNode(int x) {
        val = x;
    }
}

图解; 第一个行是第一次 翻转,第二行是第二次翻转。

 val = x;
}

}


图解; 第一个行是第一次 翻转,第二行是第二次翻转。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201213141954298.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzgzNjIwNA==,size_16,color_FFFFFF,t_70)

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: CNC:机械工程之机械制图的几何特征、测量、配合、公差带、图纸标注、公差、配合、表面粗糙度之详细攻略

下一篇: c++AES加密解密(附源码)

精华推荐