
package com.pta.one;
/**
* 1.链表反转
*/
public class ReverseListCopy
{
static class ListNode
{
int val;
ListNode next;
public ListNode(int val, ListNode next)
{
this.val = val;
this.next = next;
}
}
//迭代
public static ListNode iterate(ListNode head)
{
/**
* 1.不用for循环是因为不知到循环长度(列表长度)
* 2.不用foreach是因为传入的是ListNode,foreach底层依赖迭代器
*/
ListNode prev = null, next;
ListNode curr = head;
while (curr != null)
{
next = curr.next;//先保存指针
curr.next = prev;//prev赋值给下一个next
prev = curr;
curr = next;
}
return prev;
}
//递归
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);
ListNode prev = recursion(node1);
System.out.println(prev);
}
}