먼저, 자료 구조란 컴퓨터 프로그램을 효율적으로 구현하기 위해 연구되었기 때문에 자료구조를 이야기하기에 앞서 컴퓨터 프로그램에 대해 알아야한다.
컴퓨터 프로그램이란, 컴퓨터에 의해 실행되는 명령어들의 집합이라고 할 수 있다. 그리고 이 명령들을 수행하기 위해서는 내부적으로 여러 Data를 저장하고 처리하는 과정이 필요하다.
즉, Data(자료) + Algorithm(명령) 으로 이루어진다고 생각할 수 있다.
그 중 자료구조는 Data를 효율적으로 저장하는 방식을 뜻한다. 효율적이란 뜻은 컴퓨터 프로그램이 1)실행될때 쓰이는 메모리를 절약 2) 프로그램 수행시간의 최소화를 뜻한다. (Space Complexity + Time Complexity)
실제 프로그램의 목적과 기능을 생각해 자료구조를 이용하거나 설계해야한다는 것이다.
프로그램에서 저장하는 자료를 형태에 따라 분류하면,
1) 단순 구조
- Primitive Data로 프로그래밍 언어에서 제공하는 기본적인 데이터 타입이다.
2) 선형 구조
- List, Stack, Queue, Deque 등으로 대표되는 저장된 자료들간의 관계가 [0] - [1] - [2] - [3] ---- 과 같이 선형적으로 연결된 자료구조를 말한다. 각각의 자료들이 앞과 뒤의 자료들과 1:1 관계를 가지고 제일 처음과 뒤는 NULL과 1:1 자료를 가진다고 할 수 있다.
3) 비선형 구조
- 선형 구조와는 다르게 앞뒤 관계가 1:1 이 아닌 계층 구조(Hierarchical) 이거나 망 구조 (Network) 를 가지는 구조로서 Tree, Graph와 같은 구조가 대표적이다.
4) 파일 구조
- 하드 디스크 등과 같은 보조 기억 장치에 저장되는 파일을 뜻한다.
'Data Structure' 카테고리의 다른 글
Stack (0) | 2019.07.01 |
---|---|
List/ArrayList/LinkedList (0) | 2019.07.01 |
구조체 (0) | 2019.06.14 |
추상자료형 (0) | 2019.06.12 |