个人认为——较先前的迭代法,此方法更为简便易理解。当然也应该是建立在之前的理解之上的原因。
public static ListNode recursion(ListNode head)
{
if(head == null || head.next==null)
{
return head;
}
ListNode new_head=recursion(head.next);
head.next.next=head;
head.next=null;
return new_head;
}
主方法:
public static void main(String[] args) {
ListNode node5=new ListNode(5,null);
ListNode node4=new ListNode(4,node5);
ListNode node3=new ListNode(3,node4);
ListNode node2=new ListNode(2,node3);
ListNode node1=new ListNode(1,node2);
// while (node1!=null) {
// System.out.println(node1.val);两个循环测试用的
// node1=node1.next;
// }
// ListNode node=iterate(node1);
// while (node!=null)
// {
// System.out.println(node.val);
// node=node.next;
// }
ListNode node=recursion(node1);
while (node!=null)
{
System.out.println(node.val);
node=node.next;
}
}
成功实现链表反转