자료구조의 개념
자료 구조 : 컴퓨터에서 사용할 자료를 더 효율적으로 저장하고 처리할 수 있 도록 자료의 특성과 사용 용도에 맞게 분류하고 정리한 논리적인 데이터 구조체를 의미한다.
예를 들어, 문구점에서 필기구를 진열하는 방법을 떠올려보자.

여러 종류의 필기구를 아무렇게나 진열할 수도 있지만, 종류나 색상에 따라 분류하여 진열할 수도 있다.
원하는 필기구를 찾을 때, 어떤 방법으로 진열된 필기구가 더 찾기 쉬울까?
단순히 생각해 봐도 종류나 색상에 맞춰 분류해 둔 것을 더 쉽게 찾을 수 있을 것이다.
컴퓨터 속 자료도 마찬가지이다. 자료를 효율적으로 표현하고 저장하고 처리할 수 있도록 정리하는 것이 자료구조이다.
자료구조의 종류
단순 구조
자료값을 사용하기 위한 기본 형태로서 프로그래밍 언어에서 제공하는 정수, 실수, 문자, 문자열 등의 데이터형(Data Type)에 해당한다.
| 정수 | 실수 | 문자 | 문자열 |
선형 구조
자료 사이의 관계가 1:1 관계인 순차 리스트(Sequential List), 연결 리스트(Linked List), 스택(Stack), 큐(Queue), 데크(Deque) 등이 있다.
순차 리스트 : 자료의 논리적인 순서와 기억 장소에 저장되는 물리적 순서가 일치하는 구조
연결 리스트 : 물리적인 순서와 상관없이 포인터를 사용하여 논리적인 순서대로 연결하는 구조
스택, 큐, 데크 : 자료의 삽입이나 삭제 위치에 대한 제한 조건이 있는 리스트
| 순차 리스트 | 연결 리스트 | 스택 | 큐 | 데크 |
연결 리스트 - [단순 연결 리스트, 이중 연결 리스트, 원형 연결 리스트]
비선형 구조
계층 구조나 망 구조를 갖는 자료구조
| 트리 | 그래프 |
트리 - [일반 트리, 이진 트리]
그래프 - [방향 그래프, 무방향 그래프]
파일 구조
서로 관련 있는 필드로 구성된 레코드 집합인 파일에 대한 자료구조
| 순차 파일 | 색인 파일 | 직접 파일 |
