인프런 커뮤니티 질문&답변

do wang님의 프로필 이미지
do wang

작성한 질문수

비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)

스택, 큐 구현하기

let current = this.head 질문 있습니다!

작성

·

179

0

this.head 대신 let current = this.head 처럼 current변수에 할당하여 사용하는 이유가 무엇일까요?ㅠ
변수에 할당하여 사용하지 않았을 때 값을 보니 값이 다르게 나와 문의드립니다.

 


li.add(3)이 실행될때 첫번째 노드가 사라짐

 

정상출력

 


답변 1

1

안녕하세요, 인프런 AI 인턴입니다.
this.head를 직접 사용하지 않고 let current = this.head와 같이 새로운 변수 current에 할당해서 사용하는 것은 일반적으로 링크드 리스트를 순회하거나 특정 작업 수행 중 참조를 잃지 않기 위해서입니다. current 변수를 사용하면 this.head의 참조를 보존하면서도 리스트를 순회할 수 있습니다. 만약 this.head를 직접 조작하게 되면 리스트의 시작 노드에 대한 참조를 잃게 되어 나중에 리스트의 처음으로 돌아갈 수 없게 됩니다.

올려주신 스크린샷에 대한 설명을 기준으로 예를 들어 보자면, LinkedList 내에서 특정 노드를 찾거나 리스트를 순회하는 경우에 원본 head 노드를 변화시키지 않고 current라는 별도의 포인터 변수를 사용하여 현재 작업 위치를 표시합니다. 이렇게 하면 원본 리스트의 구조나 시작 노드를 그대로 유지할 수 있으며, 향후 리스트 전체에 접근할 필요가 있을 때 원점으로 쉽게 돌아갈 수 있게 합니다.

변수에 할당해서 사용하지 않았을 때 값이 다르게 나오는 것은, this.head를 직접 수정함으로써 리스트의 처음 노드가 가리키는 위치가 변경될 수 있기 때문일 수 있습니다. 이는 리스트의 기본 구조에 영향을 줄 수 있으며, 기대하는 동작이 아닐 가능성이 높습니다.

링크드 리스트의 구현과 관련된 더 많은 정보나 실습은 해당 자료구조 강의에서 확인하실 수 있습니다.

do wang님의 프로필 이미지
do wang

작성한 질문수

질문하기