선생님 질문이있습니다.
printAll까지 구현한상태인데 insertAt에서 여기부분 반대로 했을뿐인데 왜 4에서 무한루프도는지 이해가안되네여.
currentNode의 next를 먼저정하는것이 흐름상 newNode정하고 newNode.next를 currentNode의 .next로하려고햇는데 루프도는 이유를 모르겟네여 .ㅎㅎㄷ

답변 2
2
currentnode.next = newnode
newnode.next = currentnode.next
현재 질문자님이 작성하신 코드는 이런 상황 입니다.
currentnode -> currentcode.next == newnode -> newnode.next == newnode -> newnode.next == newnode....
둘의 위치를 바꿔준다면 정상적으로 작동할 것 같습니다.
currentnode는 현재 반복문을 돌아 마지막 node이므로 currentnode.next는 null 값이 들어있을 것입니다.
newnode를 마지막에 추가하는것이 목적이라면 newnode.next = currentnode.next를 넣어주시고,
currentnode.next에 newnode를 넣어주면 정상 연결 될 것입니다.
1
안녕하세요 top gwa님!
currentNode.next = newNode; 를 먼저 시도해보시다가 무한루프에 빠지셨군요.
해당 코드는 newNode.next = currentNode.next; 가 먼저 오지 않으면 제대로 동작하지 않습니다.
이유는 코드 옆에 주석으로 달아보겠습니다.
for(let i = 0; i < index - 1; i++){ // 새로운 노드가 삽입될 노드를 찾습니다.
currentNode = currentNode.next;
}
currentNode.next = newNode; // 현재 노드의 다음노드가 새로운 노드를 가리킵니다. 즉 새로운 노드를 삽입합니다.
// 여기까지는 문제가 없지만 newNode의 next를 기존 curretnNode의 next로 해줘야 하는데 위 코드로 currentNode.next의 참조가 바껴 버렸습니다...
newNode.next = currentNode.next; // 그러므로 이 코드는 다음 노드가 아닌 newNode를 가리키므로 자기 자신을 계속 참조하고, 루프에 빠지게 되는 것입니다.
위 순서대로 제대로 동작하게 만들고 싶으시다면
let tempNode = currentNode.next; // currentNode가 가리키는 노드를 잃어버리지 않게 저장해주고
currentNode.next = newNode; // currentNode의 next를 newNode로 바꿔서 참조를 바꿔주더라도
newNode.next = tempNode; // 이렇게 원래 가리키던 노드로 연결을 해줘야 합니다.
핵심은 currentNode.next를 잃어버리지 않고 newNode의 next로 잘 연결하는 것입니다.
궁금증이 해결되셨나요?
Test_queue 출력 오류
1
557
2
이해가됐습니다...
2
564
1
하위문제 하향식 계산이 정확히 뭔지 모르겠습니다.
1
380
1
연결리스트 질문입니다.
2
486
1
선생님 안녕하세요~~ 연결리스트 중 질문입니다.
1
467
1
안녕하세요! 큐 관련 질문입니다.
-1
448
1
연결리스트 관련 질문
1
457
2
hashFunctrion 메서드
1
296
1
HashTable set 메서드
1
331
1
셋의 핵심
1
363
1
연결 리스트 삽입과 삭제 질문드립니다.
1
704
1
deque.addLast
1
328
1
스택과 큐의 필요성
1
763
1
강의 내용 포스팅
1
448
1
큐에서 사용하는 연결리스트
1
436
1
2:23 초 1이 나오기 위해서 이해가 안갑니다.
1
356
1
javascript stack 다른 자료구조랑 사용해서 구현해야하는 자료구조일까요?
1
771
1
실제 node는 삭제가 아니네요?
1
352
1
삽입 정렬 - 1분 17초에서
1
297
1
버블 정렬 설명에 관한 질문입니다.
1
397
1
데이터 삽입 - tail에 삽입하는 경우
0
333
1
병합 정렬
1
386
1
insertAt() 관련
1
330
1
insertAt 코드 질문 있습니다.
1
401
1





