通过递归来实现链表的反转,重点是理解其思想,然后代码实现
其实现就是从后面开始,所谓的递归就是把一个大问题拆分成小问题,把小问题给解决了,大问题也就解决了,递归其本质用的是栈的数据结构
package com.fan.suanfati;
/**
* 利用递归来实现链表反转
*/
public class ListNode1 {
private int data;
private ListNode1 next;
public ListNode1(int data, ListNode1 next) {
this.data = data;
this.next = next;
}
public static ListNode1 iteration(ListNode1 head){
if (head==null||head.next==null){
return head;
}
ListNode1 new_head = iteration(head.next);
head.next.next=head;
head.next=null;
return new_head;
}
public static void main(String[] args) {
ListNode1 listNode1 = new ListNode1(5, null);
ListNode1 listNode2= new ListNode1(4, listNode1);
ListNode1 listNode3 = new ListNode1(3, listNode2);
ListNode1 listNode4 = new ListNode1(2, listNode3);
ListNode1 listNode5 = new ListNode1(1, listNode4);
ListNode1.iteration(listNode5);
System.out.println(listNode5);
}
}