题目描述:
输入一个链表,反转链表后,输出新链表的表头。
这里我采用递归的形式写
public class Solution {
public ListNode ReverseList(ListNode head){
if(head==null || head.next==null){
return head;
}
ListNode next = head.next;
ListNode newhead = ReverseList(head.next);
next.next = head;
head.next=null;
return newhead;
}
}
递归,就如同数学归纳法一样,从一般到特殊。
非递归:
public ListNode reverser(ListNode head){
if(head==null || head.next==null){
return head;
}
ListNode p = head.getNext();
ListNode pre = head;
ListNode next = p.next;
pre.next=null;
//ListNode q1 = null;
//ListNode pir = null;
while(p!=null){
p.next=pre; //表头反转
pre = p;
p =next;
if(p!=null){
next = p.next;
}
}
head = pre;
return head;
}
2019/6/20 打卡