inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

큐 - 구현

큐 구현 질문 드립니다

해결된 질문

394

김예서

작성한 질문수 6

1

안녕하세요,

doublylinkedlist 에서 insertAt 수정 중에

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

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

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

 

감사합니다!

알고리즘

답변 1

2

감자

안녕하세요 김예서님!

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

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

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

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

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

연결리스트 삽입삭제 O(1) 아닌가요?

0

11

2

큐의 마지막 데이터가 head에 위치해야 하는 이유가 궁금합니다.

0

71

2

이중연결 리스트 데이터 삭제시 질문이 있습니다.

1

64

2

자바스크립트 배열은 동적이 아닌가요?

1

87

2

자바스크립트 배열

0

77

2

코테에서 링크리스트 자료구조를 사용해야 하면, 이번 강의에서 구현한 메서드들도 모두 직접 구현하면 되나요?/

0

153

2

공부 방식 질문 드립니다.

1

117

2

메모이제이션과 타뷸레이션 관련해서 질문드립니다.

1

169

2

병합정렬에서 질문이 있습니다.

2

142

1

병합정렬 질문 있습니다.

1

138

5

데이터 삽입, 삭제 함수 오류 범위 설정

0

158

2

해시 테이블에서 질문이 잇습니다.

2

128

2

시간복잡도 계산 시 1회 연산당 연산량은 왜 고려하지 않는 건가요?

1

148

2

터미널 설정

0

114

2

2:13분 관련 질문입니다

0

91

1

8:47초경부터 9:00초까지 질문입니다.

1

135

2

tail을 삭제하는 경우에 관련해서 질문이 있습니다.

0

107

1

2:36초 head 위치가?

1

111

2

환경구축강의 중 터미널 파일 실행오류

0

162

2

4:58 이중for문 질문있습니다.

0

104

1

hanoi함수 처음 호출에 대해서 여쭤봅니다.

1

133

2

해쉬테이블 데이터 관련해서 질문있습니다.

0

149

2

자바스크립트 Map과 어떤 차이가 있나요??

0

206

2

질문이있습니다.

0

104

1