206. 反转链表
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
核心:递归到最后一个结点,然后从最后一个结点开始往前指向
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
//从null开始,因为最后头结点需要指向null
return recur(null, head);
}
public ListNode recur(ListNode a,ListNode b){
if (b==null){
return a;
}
ListNode recur = recur(b, b.next);
b.next=a;
return recur;
}
}