인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

김예서님의 프로필 이미지
김예서

작성한 질문수

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

큐 - 구현

큐 구현 질문 드립니다

해결된 질문

작성

·

335

1

안녕하세요,

doublylinkedlist 에서 insertAt 수정 중에

if(newNode.next == null){ //새로 삽입한 노드가 마지막 노드라면
            this.tail = newNode;
        }

이 부분은 index == this.count 일 때 데이터를 삽입하는 경우에만 해당되는 것 같은데,

else if문 밖으로 빼서 공통적으로 처리해주는 이유가 궁금합니다.

 

감사합니다!

답변 1

1

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

안녕하세요 김예서님!

해당 부분에서 else if문 밖으로 빼는 이유가 충분히 궁금할 수 있다고 생각합니다.

대부분 경우에서는 index == this.count로 마지막에 삽입된 경우에서 동작하는 것이 맞지만 딱 하나의 경우를 더 처리해줘야합니다.

바로 0번 인덱스에 삽입할 때인데요. 0번 인덱스에 삽입하는 경우라도 다 그렇지는 않고 빈 연결리스트에 최초로 0번 인덱스에 삽입하는 경우 newNode를 head로 설정해줘야하는 동시에 tail로 만들어줘야합니다.

따라서 해당 로직을 if문과 else if문에 둘 다 넣어줘야하는데 코드를 줄이기 위해서 밖으로 빼서 하나의 경우로 처리해준 것입니다.

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

김예서님의 프로필 이미지
김예서

작성한 질문수

질문하기