ReferenceError: currentNode is not defined오류가 납니다ㅠㅠ
코드가 중간에 잘못된건지 선생님이 주신 자료를 다운받아 복붙을 해보았는데도 오류가 납니다ㅠㅠ 무엇이 문제인지 봐주시면 감사하겠습니다ㅠㅠㅠ



답변 2
0
안녕하세요 남가형님!
코드를 살펴봤는데 놓치신게 있어 보입니다.
에러 메시지를 보면
TypeError: Cannot read properties of null (reading 'next')
at LinkedList.insertAt (file:///C:/dev/LinkedList.mjs:48:35)
at file:///C:/dev/test.mjs:25:6
로 test.mjs 파일의 25번 줄에서 문제가 발생했다는 것을 알 수 있습니다.
test.mjs 파일의 25번 줄은
21 console.log("***** insertAt() 다섯 벗 호출 *****")
22 // 3.0부터 4까지 5개의 데이터 삽입
23 list.insertAt(0,0);
24 list.insertAt(1,1);
25 list.insertAt(2,2);위와 같은 코드로 insertAt를 두 번 호출하고 난 뒤 에러가 발생했습니다.
두 번째까지 잘 동작하다가 왜 오류가 났을까요?
첫 번째 실행을 했을 때는 38번 줄의 if문이 참이 되므로
38 if(index == 0){
39 newNode.next = this.head;
40 this.head = newNode;
41 }빈 리스트에 삽입이 이루어집니다.
이어서 두 번째 insertAt() 함수가 호출되면 41번 줄이 실행되는데 여기서 문제가 발견됩니다.
41 }else{
42 let currentNode = this.head;
43
44 for(let i = 0; i < index-1; i++){
45 currentNode = currentNode.next;
46 }
47 newNode = currentNode.next; // 에러의 원인이 되는 코드!!
48 cyrrentNode.next = newNode;
49 }47번 라인에서 newNode의 next를 설정해주는 것이 아니라 newNode를 currentNode의 next로 설정해주셨습니다.
따라서 연결이 제대로 이루어지지 않아서 다음 insertAt() 함수를 호출했을 때 null을 참조했다는 에러가 발생한 것입니다.
47번 라인의 코드를 newNode.next = currentNode.next;로 수정해주시면 잘 동작할겁니다!
궁금증이 해결되셨나요? 😊
연결리스트 삽입삭제 O(1) 아닌가요?
0
20
2
큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.
0
76
2
이중연결 리스트 데이터 삭제시 질문이 있습니다.
1
67
2
자바스크립트 배열은 동적이 아닌가요?
1
89
2
자바스크립트 배열
0
80
2
코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/
0
157
2
공부 방식 질문 드립니다.
1
120
2
메모이제이션과 타뷸레이션 관련해서 질문드립니다.
1
171
2
병합정렬에서 질문이 있습니다.
2
143
1
병합정렬 질문 있습니다.
1
140
5
데이터 삽입, 삭제 함수 오류 범위 설정
0
159
2
해시 테이블에서 질문이 잇습니다.
2
130
2
시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?
1
149
2
터미널 설정
0
116
2
2:13분 관련 질문입니다
0
94
1
8:47초경부터 9:00초까지 질문입니다.
1
137
2
tail을 삭제하는 경우에 관련해서 질문이 있습니다.
0
109
1
2:36초 head 위치가?
1
114
2
환경구축강의 중 터미널 파일 실행오류
0
166
2
4:58 이중for문 질문있습니다.
0
107
1
hanoi함수 처음 호출에 대해서 여쭤봅니다.
1
135
2
해쉬테이블 데이터 관련해서 질문있습니다.
0
152
2
자바스크립트 Map과 어떤 차이가 있나요??
0
206
2
질문이있습니다.
0
107
1





