작성
·
88
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요?예
안녕하세요 직접 구현하는 연결리스트 3 추가와 삭제 2편을 복습하다 궁금한 점이 생겨 여쭤보게 되었습니다 !
지금 Object remove 메서드에 else 구절을 보면 (첫번째 노드를 삭제하는 경우가 아닌 경우)
getNode(index-1).next = removedNode.next;로 구현이 되어있습니다 !
여기에서 스스로 복습하는 과정에서 저는
getNode(index-1).next = getNode(index+1);로 생각을 했었는데, 혹시 이 로직으로 해도 문제가 되지 않는지가 궁금하네요 ..!
그리고 바로 하단에
removeNode.item = null;
removeNode.next = null;로 직접 null 값으로 비워주는 이유가 있을까요 ?
getNode(index-1).next = getNode(index+1);로 두면 삭제할 노드인 getNode(index)는 연결이 끊기기에 자동으로 GC의 대상이 된다고 생각해서 여쭤봅니다 !
복습하면서 많은 것들을 처음에는 보이지 않던 것들을 많이 얻어가는 중입니다 좋은 강의 제공해주셔서 감사드립니다 !
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
연결 리스트의 삭제와 관련하여 궁금한 점을 여쭤봐 주셨네요. 질문하신 내용을 바탕으로 두 가지 점에 대해 설명드리겠습니다.
getNode(index-1).next = getNode(index+1); 로직의 유효성:
getNode(index-1).next = removedNode.next
와 getNode(index-1).next = getNode(index+1)
는 기능적으로 유사하게 작동합니다. 둘 다 현재 위치의 노드를 제거하고, 그 노드의 이전 노드를 다음 노드에 연결하는 작업을 수행하는 것입니다.index
, index-1
, index+1
에 대해 올바르게 정의된 상태이며, 리스트의 경계를 벗어나지 않았을 경우에만 제대로 작동한다는 점을 주의해야 합니다.getNode(index+1)
를 사용하는 것은 삭제할 노드의 바로 다음 노드에 대한 명확한 참조를 나타내긴 하지만, 코드의 기본적인 동작에 있어서는 큰 차이는 없을 것입니다.removeNode.item = null;
와 removeNode.next = null;
로 초기화하는 이유:
제네릭 타입으로 전환하며 발생한 에러에 대한 질문도 받으셨는데, 이는 일반적으로 타입 변환과 관련이 있으며, 제네릭을 사용함으로써 더 명확한 타입 안전성을 제공하여 오류를 방지하는 데 기여합니다.
이 질문과 관련하여 더 구체적인 상세 내용을 다룬 질문들을 보실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.