[HackerRank] JAVA - Reverse a linked list

OOSEDUS·2025년 3월 11일
0

해커랭크

목록 보기
11/13
post-thumbnail
    public static SinglyLinkedListNode reverse(SinglyLinkedListNode llist) {
        // Edge case: 리스트가 비어있으면 그대로 반환
        if (llist == null) return null;

        SinglyLinkedListNode prev = null;   // 이전 노드
        SinglyLinkedListNode current = llist; // 현재 노드

        while (current != null) {
            SinglyLinkedListNode nextTemp = current.next; // 다음 노드 저장
            current.next = prev;  // 현재 노드의 방향을 반대로 설정
            prev = current;       // 이전 노드를 현재 노드로 이동
            current = nextTemp;   // 현재 노드를 다음 노드로 이동
        }

        return prev;  // prev가 새로운 head가 됨
    }

알아야할 개념

  • 참조를 하는 Node만 참조된 Node에 영향을 미친다.
  • 즉, SinglyLinkedListNode nextTemp = current.next; 이 코드에서 nextTemp의 값을 변화시키면 current.next의 값이 변하지만, current.next 값을 변화시켜도 nextTemp의 값이 변하지는 않는다.
profile
성장 가능성 만땅 개발블로그

0개의 댓글