반응형
1. 문제
- 단일 연결 리스트가 주어질 때, 뒤집은 리스트를 반환하라.
2. 해결
/**
* Definition for singly-linked list.
* class ListNode {
* val: number
* next: ListNode | null
* constructor(val?: number, next?: ListNode | null) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
* }
*/
function reverseList(head: ListNode | null): ListNode | null {
if(!head) return head;
let p1 = head.next;
let newlist = head;
newlist.next = null;
while(p1) {
const temp = p1.next;
p1.next = newlist;
newlist = p1;
p1 = temp;
}
return newlist;
};
- 새로운 리스트를 만든다는 생각으로, 각 노드가 가리키는 next 값만 조정해주면 된다.
- 리스트 노드를 2번 째 부터 탐색하면서, 현재 가리키는 노드를 newlist를 가리키게 하고, newlist를 업데이트 해준다.
- 이 때, 기존 next 노드 참조 값을 잃게 되므로 temp 값으로 임시 저장해 둔 후 지속적인 탐색이 가능하도록 한다.