인터넷과 정보 통신 기술의 발달에 따라 지금 우리는 고도로 정보화된 시대를 살아가고 있다. 모든사람이 다양한 자료를 활용하고 공유하며 생산하는 시대가 되었다. 이와 같은 정보의 홍수 시대에는 자료의 양이 아니라 얼마나 효율적으로 이들을 관리하고 사용하는가가 훨씬 더 중요해졌다.
컴퓨터는 현실 세계에서 반복적이고 복잡란 자료들을 효율적으로 처리하기 위한 기계이다. 컴퓨터를 이용하여 자료를 처리하여면 먼저 컴퓨터가 잘 다룰 수 있는 형태로 자료를 표현해 주어야만 한다. 사람들이 사물을 편리하고 효율적으로 사용하기 위해 정리하는 것과 마찬가지로 콤퓨터에서도 자료들을 정리하고 조직화하는 여러 가지 구조들이 있다. 이를 자료구조(Data Structure)라 부른다.
컴퓨터에서 사용하는 자료들은 여러 가지 형태로 분류할 수 있다. 자룍조는 크게 정수나 실수, 문자와 같이 많은 프로그래밍 언어에서 기본적으로 제공하는 단순 자료구조와 여러 가지 자료들이 복합적으로 구성된 복합 자료구조로 나눌 수 있다. 복합 자료구조는 다시 선형 구조와 비선형 자료구조로 나눌 수 있는데, 우리는 우선 복합 자료구조에 대해서 배울 것이다.
선형 자료구조(Linear Data Structure)는 기본 적으로 자료들이 순서적으로 나열된다. 데이터를 찾기 위해 자료에 접근하는 방법은 순서 접근(Sequential Access)과 직접 접근(Direct Access) 방법으로 나눌 수 있다. 배열은 대표적인 직접 접근 방법으로 인덱스(Index) i를 이영하여 배열의 i번째 요소 A[i]를 한 번 만 접근할 수 있다. 연결 리스트는 대표적인 순서 접근 방법이다. 시작노드에서 하나씩 다음 노드로 이동하면서 원하는 자료를 찾아야한다.
비선형 자료구조(Non-Linear Data Structure)는 자료들간에 선형적인 순서가 있는 것이 아니라 보다 복잡한 연결을 갖는 형태로 트리와 그래프 등이 여기에 속한다.
컴퓨터에서 다양한 자료구조를 활용하는 대표적인 사례가 정렬과 탐색일 것이다.
정렬은 주어진 자료들을 어떤 기준을 바탕으로 순서대로 나열한다. 정렬은 다소 알고리즘적인 측면이 강하지만 효율적인 정렬을 위해 다양한 자료구조의 활용이 필요하다.
탐색도 컴퓨터의 활용에서 가장 핵심이 되는 작업이다. 많은 경우 컴퓨터를 활용하면 자료를 찾는 일을 효율적으로 처리할 수 있을 것이다. 그러나 적절한 자료구조와 그에 따른 알고리즘을 사용하는 경우 가장 효율적인 탐색이 가능하다.