컴퓨터가 효율적으로 문제를 처리하기 위해서는 자료를 보관하고 정리하는 기술이 필요한데 컴퓨터는 자료의 특성에 따라 다양한 자료구조 기법을 사용한다. 같은 알고리즘이라도 자료구조가 달라지면 전혀 다른 프로그램이 될 수 있어, 자료에 알맞은 자료구조를 만드는 것이 매우 중요하다. 따라서 이번 기사부터 컴퓨터에 중요한 자료구조에 대해 설명하고자 한다. 이번 기사에서는 자료구조의 기본 개념 및 자료구조의 정의를 이야기한다.
자료구조의 정의
자료구조는 컴퓨터에서 처리할 자료를 효율적으로 관리하고 구조화시키기 위한 학문이다. 즉, 자료를 효율적으로 사용하기 위해서 자료의 특성에 따라서 분류하여 구성하고 저장 및 처리하는 모든 작업을 의미한다.
자료구조는 자료처리의 성능과 효율에 직접적인 영향을 미친다. 따라서 자료구조는 현실 세계의 실제 자료들의 관계를 잘 반영할 수 있어야 하고, 효율적으로 자료처리를 수행할 수 있도록 간단명료해야만 한다.
자료구조를 사용하는 이유
1) 효율성
자료를 구조화하여 사용하면서 조금 더 효율적으로 알고리즘을 구성할 수 있다. 자료를 구조화하여 사용함으로써 처리 시간, 처리하는 기억 용량 등을 고려하여 알맞은 알고리즘을 선택하여 사용할 수 있다.
2) 추상화
자료를 구조화하는 데 있어 자료를 표현하고 조작하는 방법을 추상화하여 사용함으로써 프로그램의 의존적 상황을 탈피할 수 있다. 다양한 프로그램 언어 사용이 가능하며, 어떻게 사용할 것인가에 대해 초점을 두게 된다.
3) 재사용성
자료구조는 모듈화되어 있고 문맥에 자유로워, 재사용이 가능하다. 문맥에 자유로워, 다양한 자료에 상황에 따라 다양하게 사용할 수 있고, 규정된 자료구조를 모듈화하여 사용함으로써 다양한 프로그램에서 재사용할 수 있도록 접근해야 한다.
4) 자료구조의 연구 영역
알고리즘의 분석 기법, 스택의 삽입과 삭제 알고리즘, 큐의 삽입과 삭제 알고리즘, 최단 경로 알고리즘, 삽입 정렬/쉘 정렬의 알고리즘, 선택 정렬/버블 정렬의 알고리즘, 퀵 정렬/병합 정렬의 알고리즘, 히프 정렬/기수 정렬의 알고리즘, 외부 정렬의 알고리즘, 선형 검색의 알고리즘, 이진 검색의 알고리즘, 피보나치 검색의 알고리즘, 해싱의 충돌 해결 방안, 해싱의 오버플로우 해결 방안 등에 관한 연구 분야가 있다.
5) 자료구조의 학습영역
자료구조는 단순구조, 선형구조, 비선형구조, 파일구조로 나뉜다. 단순구조는 정수, 실수, 문자, 문자열로 다시 나뉘게 되고 선형구조는 리스트, 연결리스트, 스택, 큐, 덱으로 나뉜다. 비선형구조는 트리와 그래프로 나뉘게 되고 마지막으로 파일 구조는 순차 파일, 색인 파일, 직접 파일로 나뉘게 된다.
이렇게 이번 시간에는 자료구조가 어떤 것인지에 대해 알아봤다. 다음 시간에는 자료구조의 학습 영역 중 선형구조의 리스트와 연결리스트에 대해 알아보도록 하자.
[저작권자ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]