

package com.pta;
/**
* 1.链表反转
*/
public class ReverseList
{
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 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 = iterate(node1);
System.out.println(prev);
}
}