맨 앞의 값이 prev(전에 값)을 가르켜야 한다. ( 초기값은 null )
그러려면 current의 next의 값을 저장해야함
next = c.next
next의 값을 저장했으니 c.next가 prev를 가르키도록 연결한다.
prev = c.next
다음에 옮길 값이 1을 가르킬 수 있도록 1을 prev로 설정해준다.
prev = c
next값이 현재 값이 될 수 있도록 대입해준다
c=next
next=c.next
c.next=prev
prev=c
c=next
current는 마지막으로 빠져서 null 이 되고,
prev 값이 하나하나 앞으로 올라가서 prev값을 return 해주면 완성.
public class ReverseLinkedList {
public static void main(String[] args) {
ListNode li = new ListNode(1);
li.next = new ListNode(2);
li.next.next = new ListNode(3);
li.next.next.next = new ListNode(5);
li.next.next.next.next = new ListNode(9);
ListNode solution = solution(li);
while(solution!=null){
System.out.println(solution.val);
solution=solution.next;
}
}
public static ListNode solution(ListNode li){
ListNode prev = null;
ListNode next = null;
while(li!=null){
next=li.next;
li.next=prev;
prev=li;
li=next;
}
return prev;
}
}