inflearn logo
강의

Course

Instructor

Data Structures and Algorithms Made Easy with Diagrams (Basics)

Linked List - Implementation

연결리스트 질문입니다.

Resolved

466

ldk29488114

4 asked

2

선생님 안녕하세요. 질문이 있습니다.

1️⃣ insertAt() 함수에서 에러 처리할 때

if(index > this.count) 마지막 인덱스에 데이터가 삽입이 될 수 있어서 초과로 한걸까요?

deleteAt(), getNodeAt() 함수에서 에러 처리할 때

if(index >= this.count) 마지막 인덱스가 없기 때문에 이상으로 한걸까요?

헤깔려서 정리하면서 여쭤봅니다.

2️⃣ insert 함수 만들 때와 다르게 delete, getNode 함수 만들 때 return 한 이유가 궁금합니다.

강의를 반복해서 듣는데. 헤깔리는게 자꾸 생기네요ㅜ..ㅎ

 

알고리즘 algorithm

Answer 1

0

gamja5

안녕하세요 이동근님!
insertAt()함수와 deleteAt(), getNodeAt() 함수의 에러처리가 조금 달라서 머리가 아프시나보군요?
insertAt() 혼자 조건문이 다른 이유는 함수의 성격이 조금 달라서 그렇습니다.

연결리스트에 데이터가 1, 2, 3 이렇게 3개가 삽입되어 있다고 가정하겠습니다.
그럼 1은 0번, 2는 1번, 3은 2번 인덱스로 접근할 수 있습니다.

1️⃣
deleteAt(index)함수는 index에 해당하는 데이터를 제거하는 함수이고,
getNodeAt(index)함수는 index에 해당하는 데이터를 얻는 함수입니다.
반면 insertAt(index)함수는 index에 해당하는 '위치'에 데이터를 삽입하는 함수입니다.

차이점이 느껴지시나요?
deleteAt()함수와 getNodeAt()함수는 해당 인덱스에 이미 존재하는 데이터를 참조해야합니다.
따라서 데이터를 참조하는 범위가 총 데이터의 수(count)보다 작아야만 합니다.
연결리스트에 데이터가 3개 있는데 3번 인덱스에 접근하면 범위를 넘어선 것이겠죠?
따라서 if(index >= count) 라는 조건식이 붙은겁니다.

반면 indexAt()함수는 해당 인덱스에 데이터를 삽입하는 것이기 때문에 연결리스트에 존재하는 데이터의 범위에서 하나를 더 오버할 수 있습니다.
1,2,3 이렇게 3개가 있는 배열에서 삽입은
1과 2사이, 2와3사이뿐만 아니라 3번 인덱스, 즉 2번 인덱스인 3 뒤에도 삽입할 수 있기 때문에
if(index > count) 라는 조건식이 붙은겁니다.

2️⃣
deleteAt()함수는 제거된 노드를 확인하기 위해서 리턴을 했습니다.(보통 제거하는 함수는 제거된 데이터를 리턴합니다.)
getNodeAt() 함수는 이름에서 알 수 있듯이 해당 인덱스에 있는 노드를 얻기 위한 함수이므로 리턴을 했습니다.
insertAt()함수는 왜 리턴을 하지 않았나 궁금해 하셨는데 insertAt()함수의 결과가 필요로 하지 않아서 리턴하지 않았습니다.
만약 이동근님은 insertAt()함수를 호출하고 생성한 노드를 확인하고 싶으시다면 insertAt()함수에 리턴을 추가해도 상관없습니다 ㅎㅎ

필요에 따라서 리턴은 할 수도 있고 하지 않을 수도 있습니다!

궁금증이 해결되셨나요?

0

ldk29488114

자세한 설명 감사합니다!

이해가 너무 잘됐습니다~👍💪
insertAt()함수 같은 경우는 parameter가 insertAt(index, data)라서 확인을 안해도 될 것 같네요!

감사합니다.

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

0

71

2

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

1

60

2

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

1

85

2

자바스크립트 배열

0

75

2

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

0

148

2

공부 방식 질문 드립니다.

1

115

2

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

1

166

2

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

2

140

1

병합정렬 질문 있습니다.

1

136

5

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

0

156

2

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

2

126

2

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

1

146

2

터미널 설정

0

112

2

2:13분 관련 질문입니다

0

89

1

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

1

132

2

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

0

106

1

2:36초 head 위치가?

1

108

2

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

0

158

2

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

0

103

1

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

1

127

2

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

0

145

2

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

0

201

2

질문이있습니다.

0

101

1

2번째 복습 스터디📖 를 진행하고 스터디원분들과 나눈 질문들 입니다.(자료구조와 알고리즘)

1

144

2