reverse linkedlist

ims·2021년 1월 25일
0

알고리즘

목록 보기
20/23

상황


맨 앞의 값이 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;
    }
}
profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글