前言

★ 这里是小冷的博客
✓ 优质技术好文见专栏
个人公众号,分享一些技术上的文章,以及遇到的坑
当前系列:数据结构系列
源代码 git 仓库 ‘
数据结构代码地址 代码Git 仓库地址

反转链表

思路

 * 1.先定义一个节点 reverseHead = new HeroNode();
 * 2.从头遍历原来的链表,每次遍历一个节点就将其取出并且放到信的链表的最前端,
 * 3.原来的链表head.next = reverseHead.Next

思路执行流程图

代码

/** * @author 冷环渊 Doomwatcher * @context: 腾讯面试题 反转链表 * 思路: * 1.先定义一个节点 reverseHead = new HeroNode(); * 2.从头遍历原来的链表,每次遍历一个节点就将其取出并且放到信的链表的最前端, * 3.原来的链表head.next = reverseHead.Next * @date: 2021/12/18 15:38 * @param head * @return: void */
    public static void reverseList(HeroNode head) {
   
        if (head.next == null || head.next.next == null) {
   
            return;
        }
        //需要新的一个空的头
        HeroNode reverseHead = new HeroNode(0, "", "");
        // 获得第一个有效的节点
        HeroNode cur = head.next;
        //指向[cur]的下一个的节点
        HeroNode next = null;
        while (cur != null) {
   
            //保存当前的节点的下一个位置 有用
            next = cur.next;
            // 将cur的下一个指向 新的链表的最前端
            cur.next = reverseHead.next; 
            //将新链表的最前端为cur
            reverseHead.next = cur;
            //cur 继续向后遍历
            cur = next;
        }
        head.next = reverseHead.next;
    }

输出结果