题目
解题思路
利用递归的思想,当head为null或者head.next为null时,直接返回head。
当不为null时,将head.next放入递归序列,用last进行接收每次递归的结果,因为每次递归的是head.next,所以递归结束后,最初的会出现head->2<-3<-4<-last的情况,所以使用head.next,.next=head将2指向head,最后将head.next指向bull。完成一次链表的递归形式的反转。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null) return null;
if(head.next==null) return head;
ListNode last=reverseList(head.next);
head.next.next=head;
head.next=null;
return last;
}
}