经典面试题: java实现单链表翻转
日期: 2020-12-13 分类: 跨站数据测试 433次阅读
经典面试题: 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;
}
}
图解; 第一个行是第一次 翻转,第二行是第二次翻转。

 除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
标签:数据结构和算法 数据结构
精华推荐

