사회가 날이 다르게 급변하면서 인터넷과 같은 매체에 등록되는 자료의 양이 풍부하고 다양해지고 있다. 이러한 시대적 변화에 발맞춰 자료들을 정확하고 효율적으로 탐색하는 것의 중요성이 증대되었고, 그 결과 자료 구조에 대한 논의가 지속되어 왔다.
자료를 어떤 구조로 저장하느냐에 따라 자료를 찾거나 처리하는 시간에 차이가 발생한다. 앞으로 우리가 다룰 자료의 양은 많고 복잡하기에 자료 구조와 이를 활용하는 방법에 대한 숙지가 필요하다.
일반적으로 컴퓨터에서 다루는 자료 구조는 단순 구조, 선형 구조, 비선형 구조로 구분된다.
단순 구조의 경우에는 일반적으로 다루는 정수, 실수, 문자가 있다.
선형 구조는 스택, 큐, 리스트 등이며 일렬로 저장하는 형태이다. 이들은 자료의 개수가 정해져 있고, 특정 순서로 인해 서로 자료들끼리 유기적으로 연결되는 경우에 사용된다.
비선형 구조는 트리, 그래프 등이며 자료 간에 불규칙적인 연결 형태를 가지고 있다. 일반적으로 자료를 계층별로 관리하고, 빠른 탐색 속도가 필요할 때 많이 이용된다.
추상 자료형(ADT : Abstract Data Type)은 자료가 무엇이고, 자료를 가지고 수행할 수 있는 연산들이 어떤 기능을 가지고 있는지만 정의한다. 연산들이 어떻게 구현되는지에 대해서는 정의 내용에 포함하지 않는다.
대표적인 예시인 자판기를 추상 자료형으로 표현하면 아래와 같다.
ADT 자판기
데이터 : 물, 버튼, 커피
연산:
M ∈ Money;
- InsertMoney(M) ::= 돈이 자판기에 입력되는 연산
- BuyCoffee() ::= 자판기에서 물에 커피를 타 판매하는 연산
- Change() ::= 남은 돈을 돌려주는 연산
END 자판기
추상 자료형의 경우 구현 내용을 몰라도 쉽게 찾아서 쓸 수 있고, 단순하여 알고리즘을 개발하기 좋다는 점이 장점이다.
정관용, 임종범, 박병기, 복대원. (2013). 고등학교 정보과학 (pp. 184-187). 서울: (주)현대아트컴.