每天一道剑指offer-反转链表
- 2019 年 10 月 4 日
- 笔记
今天的题目 每天的题目见github(看最新的日期): https://github.com/gzc426 具体的题目可以去牛客网对应专题去找。
昨天的题解
题目
每天一道剑指offer-反转链表 来源:牛客网对应专题
题目详述
输入一个链表,反转链表后,输出新链表的表头。
题目详解
思路
- 先反转第一个节点;
- 然后后面的依次反转;
代码
/* /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { if(head == null || head.next == null) return head; ListNode p = head.next;//p指向头结点的下一个节点 ListNode pre = head;//p节点的前一个节点pre. pre.next = null;//先把第一个节点当做最后一个节点,置位null ListNode next = p.next;//然后next记录p的下一个节点 while(p != null) { p.next = pre;//p当前节点指向前一个pre,完成这两个节点的反转 pre = p;//然后pre往后移动 p = next;//然后p指向next 这样都开始往后移动了。 if(p != null)//只要下一个节点不为空,next才可以赋值成下一个节点。 next = p.next; } head = pre; return head; } }
代码截图(为了避免代码排版错乱)