Inflearn brand logo image

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

수뼈님의 프로필 이미지
수뼈

작성한 질문수

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

큐 - 구현

2:37초 질문입니다.

해결된 질문

작성

·

72

·

수정됨

0

image.png

여기서 기존 head(2)가 가리키던 노드는 3이므로, 그 이전 노드는 2인 거죠? 맞다면 설명이 잘못된 게 아닐까 해서요...ㅠㅠ

 

코드는 기존 head의 이전 노드로 잘 써 있고, 도식도 잘 표시되었는데 설명이 다소 헷갈려서 확인 차 여쭤 봅니다.

답변 2

0

감자님의 프로필 이미지
감자
지식공유자

안녕하세요 수뼈님!
영상 내용이 조금 헷갈리신 것 같아서 다시 설명드리겠습니다.

영상에선 초기에 2 - 3으로 연결되어 head가 2를 가리키고 있었습니다.

그 다음은 0번째 인덱스로 새로 삽입한 경우를 보여드리는 그림입니다.

 

if(index == 0){
  newNode.next = this.head;
  this.head = newNode;
}

위 코드에 따라 새로 삽입한 노드는 기존 head(2)를 가리키게 되고 1이 새로운 head가 된 그림을 보여드리고 있는 것입니다.

 

여기서 이전 노드와 다음 노드는 해당 노드에 있는 변수 prev, next 변수를 말하는 것입니다.
2 - 3만 연결되어 있을 때 상황을 설명드리겠습니다.
2를 기준으로 다음노드(next)는 3이고 이전 노드(prev)는 null로 아무 값도 가지고 있지 않습니다.
반면 3을 기준으로 다음노드(next)는 null이고, 이전 노드(prev)는 2입니다.

위 부분의 내용을 이해하셔야 앞으로도 혼란이 없으실 것 같습니다!

궁금증이 해결되셨나요? 😊

감자님의 프로필 이미지
감자
지식공유자

수뼈님의 머릿속으로 들어가보려고 생각해보았는데요!

여기서 기존 head(2)가 가리키던 노드는 3이므로,

이 부분에서 오해가 생기는 것 같습니다.
기존 head 변수 그 자체는 2가 저장된 노드를 가리키고 있는 것이고 2가 저장된 노드의 next가 3이 저장된 노드를 가리키고 있는 것입니다.

수뼈님의 프로필 이미지
수뼈
질문자

head가 2이고, head가 가리키던 노드는 3 아닌가요?

감자님의 프로필 이미지
감자
지식공유자

정확히 말하면
head가 가리키는 노드가 2이고,
2가 가리키는(next)가 3인 것입니다.
따라서 2-3 두 개만 연결되었을 땐 기존 head가 가리키던(2) 노드의 이전 노드는 null이 되는 것입니다.
head는 단순히 노드를 가리키는 변수라고 생각하셔야 합니다.

수뼈님의 프로필 이미지
수뼈
질문자

영상에선 초기에 2 - 3으로 연결되어 head가 2를 가리키고 있었습니다.

 

라고 하셨는데 head가 가리키던 것, 즉 head.next가 3인 거고 head는 2라서 코드를 제대로 설명하려면 "기존 head가 가리키던 노드의 이전 노드를 새로 삽입한 노드로 설정합니다" 라는 설명을 "기존 head 노드의 이전 노드를 새로 삽입한 노드로 설정합니다"로 고쳐야 정확하지 않느냐 하는 것입니다!

감자님의 프로필 이미지
감자
지식공유자

기존 head를 변수가 아닌 노드로 바라보면 오해가 생길 수 있을 것 같네요.
의견 감사합니다.

수뼈님의 프로필 이미지
수뼈
질문자

저도 쓸데없는 것에 너무 억지부리며 매달린 것 같습니다 죄송합니다ㅠㅠ

감자님의 프로필 이미지
감자
지식공유자

영상 후반부에서도 변수(head, tail등)는 '가리킨다고' 표현하고
노드가 연결되는 것을 표현할 때는 '이전 노드', '다음 노드'로 표현하기 때문에 이 차이를 구분하시고 들으시면 이해가 쉬우실 것 같습니다! 👏👏

0

안녕하세요, 인프런 AI 인턴입니다. 수뼈님!

질문 주신 부분에 대해 설명드리겠습니다. 더블 연결 리스트에서는 각 노드가 이전과 다음 노드를 가리키고 있습니다. 이는 즉, 현재 노드가 “이전 노드의 다음”과 “다음 노드의 이전”을 가리킨다는 것을 의미합니다.

질문에서 말씀하신 대로, 기존의 헤드(2)는 3을 가리키고 있고, 그 이전 노드는 헤드 자체(2)가 맞습니다. 즉, 헤드 노드의 이전 노드가 존재하지 않는 경우라면, 이전 노드는 null일 수 있지만, 일반적인 구조에서의 설명이라면 연결 리스트의 맥락에 맞춰 설명이 되었을 것입니다.

그래서 간단히 정리하자면, 설명이 헷갈릴 수 있지만, 코드와 도식이 잘 표시되어 있다면 전체 구조를 다시 한 번 확인하며 기존 노드들이 어떻게 연결되는지 확인하시는 것이 좋습니다. 더블 연결 리스트에서는 한 번의 연결로도 양방향으로 노드가 이어져 있기 때문에 머리 속에서 이 구조를 유지하시는 것이 중요합니다.

추가적으로 같은 주제를 다룬 유사한 질문이 있어서 참고가 될 수 있습니다:

이 답변이 도움이 되셨기를 바랍니다. 이해가 되지 않는 부분이나 추가적으로 궁금한 점이 있으시다면 언제든지 질문해 주세요. 😊

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

수뼈님의 프로필 이미지
수뼈

작성한 질문수

질문하기