题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/* 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) return null; //如果本身就是一个空链表 就直接返回 ListNode pre = null; //设置当前节点的前一个结点为null ListNode next = null; //设置当前结点的下一个结点为null //遍历链表 将每一个结点的next 变为它的before //例如: 1 -> 2 -> 3 -> 4 ->5 //变化后:1 <- 2 3 -> 4 -> 5 当然这里链表会断开 所以需要用next来保存还未遍历到的链表 while (head != null) { next = head.next; //保存为遍历到的链表 head.next = pre; //将当前结点的下一个结点指向上一个结点 pre = head; //将当前结点作为下一个结点的pre head = next; //将下一个结点的作为当前结点 } return pre; } }