最主要的是两种方式的掌握 迭代法和递归法
public class Solution001 {
public static void main(String[] args) {
//进行验证
ListNode l4 = new ListNode(4),
l3 = new ListNode(3,l4),
l2 = new ListNode(2,l3),
l1 = new ListNode(1,l2);
ListNode cur = l1;
while(cur!=null){
System.out.println(cur.val);
cur=cur.next;
}
System.out.println("------迭代法--------");
cur = reverseList(l1);
while(cur!=null){
System.out.println(cur.val);
cur=cur.next;
}
System.out.println("------递归法--------");
cur = reverseList2(l4);
while(cur!=null){
System.out.println(cur.val);
cur=cur.next;
}
}
//迭代法
public static ListNode reverseList(ListNode head){
ListNode cur = head;
ListNode next,newhead = null;
while(cur!=null){
next = cur.next;
cur.next = newhead;
newhead = cur;
cur = next;
}
return newhead;
}
//递归法
public static ListNode reverseList2(ListNode head){
if(head==null || head.next==null) return head;
ListNode newhead = reverseList2(head.next);//这一步就是一直递归来到末尾结点 返回末尾结点作为头结点
//翻转
head.next.next = head;
head.next = null;
return newhead;
}
}
class ListNode{
int val;
ListNode next;
public ListNode(){
}
public ListNode(int value){
this.val = value;
}
public ListNode(int value,ListNode next){
this.val = value;
this.next=next;
}
}