题:输入一个链表,反转链表后,输出新链表的表头。
方法一:递归
/* 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 res = ReverseList(head.next); head.next.next = head; head.next = null; return res; } }
方法二:迭代
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode ReverseList(ListNode head) { ListNode res = null; while(head != null){ ListNode temp = head.next; head.next = res; res = head; head = temp; } return res; } }