反转链表
思路
* 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; }
输出结果