public class A {
public static void main(String[] args) {
ListNode root = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(5);
ListNode node5 = new ListNode(6);
root.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
ListNode listNode0 = reverse1(root);
print(listNode0);
ListNode listNode = reverse2(root);
print(listNode);
}
private static ListNode reverse2(ListNode head) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy.next;
ListNode cur = pre.next;
while (cur != null) {
pre.next = cur.next;
cur.next = dummy.next;
dummy.next = cur;
cur = pre.next;
}
return dummy.next;
}
private static ListNode reverse1(ListNode pre) {
if (pre == null || pre.next == null) {
return pre;
}
ListNode listNode = reverse1(pre.next);
ListNode current = pre.next;
current.next = pre;
pre.next = null;
return listNode;
}
private static void printReverse(ListNode root) {
if (root == null) {
return;
}
printReverse(root.next);
System.out.println(root.val);
}
private static void print(ListNode root) {
for (ListNode node = root; node != null; node = node.next) {
System.out.println(node.val);
}
}
}
class ListNode {
int val;
ListNode next;
public ListNode(int val) {
this.val = val;
}
}