inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)

연결리스트 - 구현

선생님 질문이있습니다.

해결된 질문

202

top gwa

작성한 질문수 27

1

printAll까지 구현한상태인데 insertAt에서 여기부분 반대로 했을뿐인데 왜 4에서 무한루프도는지 이해가안되네여.

currentNode의 next를 먼저정하는것이 흐름상 newNode정하고 newNode.next를 currentNode의 .next로하려고햇는데 루프도는 이유를 모르겟네여 .ㅎㅎㄷ

algorithm

답변 2

2

oort_cloud98

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로 잘 연결하는 것입니다.
궁금증이 해결되셨나요?

0

top gwa

참조가 바뀌어 버렷군요 .. 감사합니다

0

top gwa

 

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