node
на самом деле null
после одной итерации.
Я прокомментировал некоторые из ваших кодов, чтобы объяснить:
Node reverseList(Node head) {
Node curr = null;
Node node = head;
Node next = null;
while (node) {
next = curr; // Here, curr is null, so next = null
curr = node;
System.out.println("curr has data " + node.data);
curr.next = next; // You are here doing 'curr.next = null' (see before)
node = node.next;
}
return curr;
}
Вот решение от https://www.geeksforgeeks.org/reverse-a-linked-list/чтобы перевернуть связанный список:
Node reverse(Node node) {
Node prev = null;
Node current = node;
Node next = null;
while (current != null) {
next = current.next;
current.next = prev;
prev = current;
current = next;
}
node = prev;
return node;
}
Кстати, если вы еще этого не сделали, взгляните на объект ArrayList
, который позволяет вам просматривать список и в обратном направлении.