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

sangjin.yoo님의 프로필 이미지
sangjin.yoo

작성한 질문수

CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조

자료구조 카테고리화

작성

·

242

·

수정됨

0

안녕하세요~항상 강의 잘 보고 있습니다

자료구조에 대해서 완강하고나서 질문이 있어서요~

자료구조의 종류로는 어떠어떠한게 있다는건지는 이해했는데요

이해한 내용이 뒤죽박죽이다보니 종류를 카테고리화 한 내용들을 좀 찾아봤는데요

 

image.png대게 이런식으로 나눠져있더라구요

강사님께서 알려주신 자료구조 중

map, set, hashtable 자료구조는 저 카테고리 중 어디에 속한다고 보면될까요??

그리고 heap과 이진탐색트리는 비선형구조-트리-이진트리 하위에 속한다고 보면 되겠죠??

 

 

답변 1

1

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

안녕하세요 ㅎㅎ

내부적으로 어떠한 자료구조를 쓰느냐에 따라 결정된다고 보시면 됩니다.

map같은 경우 내부적으로 레드블랙트리를 쓰죠? 그렇기 때문에 map은 비선형트리라고 할 수 있습니다.

나머지 또한 다음과 같습니다.

  • map >> 비선형 트리

  • set >> 비선형 트리

  • hashtable >> 비선형 트리 또는 선형 - 연결리스트

 




또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


sangjin.yoo님의 프로필 이미지
sangjin.yoo
질문자

빠른댓글 감사합니다..ㅠ ㅠ

 

그리고 제가 이해하기로는 대부분의 자료구조들이

 

논리상으로는 어떠한 형태로 데이터를 저장하고 관리하는지에 따라 자료구조 종류가 달라지지만

 

최종적으로는 배열 또는 노드를 이용한 연결리스트 방식을 사용해서 구현한다는 생각이 드는데 혹시 맞을까요??

 

자료구조의 일부인 큐, 스택 구현 예제들을 구글링 해보면

결국 배열이나 연결리스트로 구현하고 있고

 

자바 컬렉션 소스들을 까봐도 최종적으로는

배열에 저장하거나 노드에 저장해서 연결시키거나 하고 있는거 같아서용..

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

흠..

최종적으로는 배열 또는 노드를 이용한 연결리스트 방식을 사용해서 구현한다는 생각이 드는데 혹시 맞을까요??

>> 어느정도는 맞긴합니다만... 이렇게 이해하시면 됩니다. 깊게 봤을 때 내부적으로는 배열 또는 노드를 이용한 연결리스트 방식을 사용하는 것도 있지만.. 그렇다고 해서 무조건 최종적으로는 배열 또는 노드를 이용한 연결리스트 방식을 사용해서 구현한다.라고 답하는 것은 아닌 것 같습니다.

예를 들어 레드블랙트리를 이용해 map을 구현하는데요. 이를 노드를 이용해서 map을 구현했다는 워딩보다는 레드블랙트리를 이용해 map을 구현한다라는 워딩이 더 정해인 것 같습니다.

 

자료구조의 일부인 큐, 스택 구현 예제들을 구글링 해보면 결국 배열이나 연결리스트로 구현하고 있고

>> 이 경우에는 아마 해당 언어가 큐를 제공해주지 않아서 배열이나 연결리스트로 구현할뿐이지, C++에서는 큐, 스택 자체를 자료구조로 제공합니다. 이는 언어의 차이지 일반화시킬 수 없는 부분입니다.

 

예를 들어 자바의 stack의 경우

image

지금 보시는 것처럼 vector를 상속받아 구현됩니다. 하지만 이는 언어의 특성일 뿐입니다.

 

C++의 stack의 경우 vector와는 무관하게 독자적인 컨테이너로 구현됩니다.

image



또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

 

sangjin.yoo님의 프로필 이미지
sangjin.yoo

작성한 질문수

질문하기