题目:递归法
代码:
/**
* 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) {
// 1->2->3->4->5->null
if (head == null || head.next == null) {
return head;
}
// head=5时,return 5;
// head=4,cur = 5;
// head=3,cur=5--->4
// head=2,cur=5-->4--->3
// head=1,cur=5--->4--->3--->2
ListNode cur = reverseList(head.next);
// head=4 head.next.next,5的下一个指向4,
// head=3,head.next.next,5-->4-->3
// head=2,head.next.next 5-->4-->3-->2
// head=1,head.next.next 5--4--3---2--1
head.next.next = head;
// 4--->5断开
// 3--->4断开
// 2-->3断开
// 1--2断开
head.next = null;
return cur;
// 返回head5---->4;
// 返回head5---->4----->3;
// 返回head5---->4----->3--->2
// 返回head5---4--3--2--1
}
}