public class LinkedListReverse {
public static void main(String[] args) {
ListNode listNode = null;
listNode = new ListNode(1);
listNode.next = new ListNode(2);
listNode.next.next = new ListNode(3);
ListNode result = reverse(listNode);
System.out.println(result.val + " " + result.next.val + " " + result.next.next.val);
}
public static ListNode reverseList(ListNode head) {
ListNode preNode = null;
ListNode node = null;
while (head != null) {
node = head.next;
head.next = preNode;
preNode = head;
head = node;
}
return preNode;
}
public static ListNode reverse(ListNode current) {
if (current == null || current.next == null) {
return current;
}
ListNode nextNode = current.next;
current.next = null;
ListNode reverseRest = reverse(nextNode);
nextNode.next = current;
return reverseRest;
}
}
class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}