Skip to content

Commit b338303

Browse files
committed
reverse linked list
1 parent 9222735 commit b338303

1 file changed

Lines changed: 86 additions & 0 deletions

File tree

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/**
2+
* Definition for singly-linked list.
3+
* function ListNode(val, next) {
4+
* this.val = (val===undefined ? 0 : val)
5+
* this.next = (next===undefined ? null : next)
6+
* }
7+
*/
8+
9+
/**
10+
* @param {ListNode} head
11+
* @return {ListNode}
12+
*/
13+
var reverseList = function (head) {
14+
15+
/**정리
16+
ListNode {
17+
val: number;
18+
next: ListNode | null; //
19+
}
20+
*/
21+
22+
/**
23+
설명에 나와 있는 head=[1, 2, 3, 4, 5]는 실제로 다음과 같음.
24+
const head =
25+
new ListNode(
26+
1,
27+
new ListNode(
28+
2,
29+
new ListNode(
30+
3,
31+
new ListNode(
32+
4,
33+
new ListNode(5, null)
34+
)
35+
)
36+
)
37+
);
38+
*/
39+
40+
/**
41+
계획
42+
1. ListNode -> Array로 바꾸는 함수 생성
43+
2. const headArray는 head를 Array로 바꾼 값
44+
3. const reversedArray는 headArray를 reverse한 배열
45+
4. const result는 reversedArray를 ListNode로 바꾼 값
46+
5. return result
47+
*/
48+
49+
// ListNode를 Array로 바꿔주는 함수
50+
const getToArray = (listNode) => {
51+
const tempArray = [];
52+
let cur = listNode; // 객체 참조 복사!
53+
54+
while (cur !== null) {
55+
tempArray.push(cur.val);
56+
cur = cur.next;
57+
}
58+
return tempArray;
59+
}
60+
61+
const getReversedArray = (arr) => {
62+
63+
const reversedArray = [...arr].reverse();
64+
65+
return reversedArray;
66+
}
67+
68+
const getToListNode = (arr) => {
69+
const dummy = new ListNode(undefined, undefined);
70+
let tail = dummy; // 객체 참조 복사! 즉, dummy가 가리키는 객체를 tail도 가리키게 (참조 복사) 됨!
71+
72+
for (const item of arr) {
73+
tail.next = new ListNode(item, null);
74+
tail = tail.next;
75+
}
76+
77+
return dummy.next;
78+
}
79+
80+
const headArray = getToArray(head);
81+
const reversedArray = getReversedArray(headArray);
82+
const result = getToListNode(reversedArray);
83+
84+
return result;
85+
86+
};

0 commit comments

Comments
 (0)