자료구조(Data Structure)는 사전적 의미로는 자료(Data)의 집합이며, 각 원소들이 논리적으로 정의된 규칙에 의해 나열되고 자료에 대한 처리를 효율적으로 수행할 수 있도록 자료를 구분하여 표현한 것이다. 잘 선택된 자료구조는 실행시간을 단축시켜주거나 메모리 자원을 절약시켜준다.
자료구조의 목적에 따른 특징은 다음과 같다.
1.
효율성
데이터의 전달, 검색, 연산 등 다양한 작업을 데이터에 대하여 구현할 때, 구현된 알고리즘이 시간적, 공간적으로 효율성이 높아야 좋은 알고리즘이라 할 수 있다. 이러한 알고리즘을 사용할 때 필요한 데이터의 구조도 천차만별이다. 예로, 선형의 배열에서 특정 데이터를 순차적으로 찾는것 보다 비선형적인 트리에서 이진탐색을 실행하는것이 더욱 효율적이다. 사용하는 알고리즘에 따라 전략적으로 자료구조를 선택한다면 코드의 완성도를 높일 수 있다.
2.
추상화
추상화란 복잡한 자료, 모듈, 시스템 등으로 부터 핵심적인 개념만 간추려 내는 것이다. 자료구조또한 마찬가지로 다양한 언어와 변수로 만들어지는 구체적인 알고리즘 자체에 집중하지 않고 작동 원리만 알면 구현할 수 있도록, 또는 사용법만 익히면 이식해서 사용하도록 추상적인 개념을 지니고 있다. 자료구조는 개발환경 제한사항을 떠나 추상적 개념만 이해한다면 사용할 수 있다.
3.
재사용성
자료구조의 추상적 특징에 이어, 자료구조를 설계할때는 특정 프로그램이나 환경에서만 동작하게 설계하지 않는다. 다양한 프로그램에서 동작할 수 있도록 범용성 있게 설계하기 때문에 해당 프로젝트가 아닌 다른 프로젝트에서도 사용할 수 있다.
자료구조의 분류
비선형 구조
트리(Tree)
그래프(Graph)