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가 됨
}
알아야할 개념
SinglyLinkedListNode nextTemp = current.next; 이 코드에서 nextTemp의 값을 변화시키면 current.next의 값이 변하지만, current.next 값을 변화시켜도 nextTemp의 값이 변하지는 않는다.