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

hjh910314님의 프로필 이미지
hjh910314

작성한 질문수

코딩테스트 [ ALL IN ONE ]

연결리스트 (Linked List) - 1

연결리스트 (Linked List) - 1 : 17분부터

작성

·

312

·

수정됨

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 수고 많으십니다.

 

연결리스트 (Linked List) - 1 : 17분부터 이해가 안가서 문의 남깁니다.

  1. append(2) → append(3)으로 갈 때

1-1) new_node = Node(value) 에서 append(2),(3)의 위치값은 둘다 0x00000 로 지정되고

1-2) 그 다음 명령어인 else로 오면 append(2)의 위치 값이 생기는 걸로 설명해주셨습니다.

1-3) 그리고 그 다음에 append(4)가 실행되면 그냥 위에서 했던것 처럼 진행하면 append(3)방에는 위치값이 생기고 append(4)방은 0x00000으로 지정되는거 아닌가요?

왜 while 문을 써줘야되는지 모르겠습니다.

→ 혹시 class Node 로부터 명령어가 계속 이어져서 그런건가요?

class Node에서 first.next = second / second.next = third로 지정해놨는데 third.next를 지정하지 않아서 둘다 0x0000으로 위치 값이 된건가요?

 

2. 18분 24초 while 문에서

while(current.next): 명령어가

current의 next node가 none 까지 반복하라는 거라고 말씀해주셨는데 while(current.next) 이 한 문장에 함축적으로 명령어가 담겨져 있는 건가요?

왜 while 문이 저걸 의미하는지 모르겠네요ㅠ

→ 혹시 class Node 로부터 명령어가 계속 이어져서 그런건가요?

class Node에서 next 초기 값을 none으로 지정해줘서 current.next 가 none 값을 찾아라는 의미일까요?

감사합니다.

 

 

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

질문에 답변 드리겠습니다.

  1. linked list에서 새로운 node를 append 할 때, 우선 new_node = Node(value)로 새로운 node 객체를 생성합니다. 그리고 첫 번째 노드를 가리키는 포인터인 first가 None인지 아닌지에 따라, 만약 None이면 new_node의 주소를 first가 가리키도록 하고, None이 아니면 첫번째 노드인 first부터 시작해서 다음 노드를 가리키는 포인터인 next가 None인 노드를 찾아서 거기에 새로운 노드를 추가하게 됩니다. 이때 while문을 사용하는 이유는 노드가 연결되어 있는지를 확인하기 위해서입니다. 따라서, append(4)가 실행되었을 때, 추가될 노드의 주소가 first.next.next라는 것이 이미 정해져 있으므로 while문을 수행하지 않고, 조건을 만족하지 않아서 새로운 노드가 추가되지 않게 됩니다.

  2. 18분 24초에서의 while(current.next)는 current가 마지막 노드인지 아닌지를 확인하기 위한 것입니다. while문을 수행하면, 현재 노드 다음에 노드가 있는지를 확인하게 되어, current가 마지막 노드가 되면 current.next가 None이 되므로 while문이 종료됩니다.

더 궁금하신 점이 있으시면 언제든지 댓글로 질문해주세요. 수고하세요 :)

hjh910314님의 프로필 이미지
hjh910314

작성한 질문수

질문하기