"자료구조"(Data Structure)란 데이터에 효율적인 접근을 위한 데이터의 구조, 관리, 저장을 말한다.

 

정확히 말하면 "자료구조"는 데이터의 모임으로,  "데이터 간의 관계"와 "적용할 함수나 명령"을 의미한다.

예를 들어 자료구조 중 Queue를 생각해 보면, 데이터의 저장 및 삭제까지를 정의한다. 

 

프로그래밍에서 적절한 자료구조는 효율적인 알고리즘을 수행할 수 있게 해준다.

Queue 자료구조를 사용하면, BFS 알고리즘은 효율적으로 수행할 수 있다.

 

 

자료구조의 분류 

자료구조는 크게 2가지로 분류된다. 

  • 원시 자료구조 (Primitive Data Structure)
  • 복합 자료구조 (Non-Primitive Data Structure)

원시 자료구조 (Pritimitive Data Structure)

"원시 자료구조"는 기본적인 자료구조로 "기본 자료형"이라고 부른다.

프로그래밍 언어에서 기본적으로 지원하는 int, float, boolean등과 같은 흔히 알고 있는 자료형이 여기에 포함된다.

 

복합 자료구조 (Non-Primitive Data Structure)

"복합 자료구조"는 원시 자료구조를 기반으로 만들어낸 배열, 스택, 트리 등과 같은 자료구조를 의미한다. 배열, 연결리스트, 스택 등과 같은 자료구조가 여기에 포함된다.

 

복합 자료구조는 데이터 간의 관계에 따라 "선형 자료구조"와 "비선형 자료구조"로 나뉜다.

 

선형 자료구조 (Linear Data Structure)

"선형 자료구조"는 데이터 요소를 순차적으로 연결하며, 데이터 간의 관계가 1:1인 자료구조이다.

선형 자료구조에는 다음과 같은 자료구조가 있다. 

  • 배열
  • 연결리스트 
  • 스택

비선형 자료구조 (Non-Linear Data Structure)

"비선형 자료구조"는 데이터 요소를 비순차적으로 연결하며 데이터간의 관계가 1:N 혹은 N:M 등으로 연결된다. 

비선형 자료구조에는 다음과 같은 자료구조가 있다. 

  • 트리
  • 그래프

 

ADT (Abstract Data Types)

"추상 자료형"(Abstract Data Types)은 자료들과 자료들의 대한 연산이 정의된다.

이러한 추상 자료형을 "구현"한 것이 자료구조가 된다. 

대부분 자료구조는 추상 자료형과 동일한 이름을 사용한다.

  • Stack, Queue, 연결리스트 ...

 

Queue를 예로 살펴보자. Queue는 push와 pop 연산을 수행한다. 

하지만, Queue의 구현이나 push나 pop이 어떻게 구현되어 있는지는 모른다. 

 

만약, 이러한 Queue의 push나 pop을 직접 구현하게 되면 자료구조가 된다. 

 

 

References

위키백과

 

https://www.javatpoint.com/primitive-vs-non-primitive-data-structure

복사했습니다!