추상 자료형(Abstract Data Type, ADT)은 데이터와 그 데이터를 처리하는 연산을 함께 정의한 개념으로, 구현의 세부 사항은 숨기고 사용자가 필요로 하는 기능(연산)만을 명확히 기술한 것입니다.
추상 자료형은 "무엇을 할 수 있는가"에만 초점을 맞추고 "어떻게 구현되는가"에 대한 세부 사항은 감춥니다. 이는 프로그래밍에서 데이터의 사용 방법을 정의하는 동시에, 구현의 독립성을 보장합니다.
예를 들어, 스택 추상 자료형(Stack Abstract Data Type)은 다음과 같은 데이터와 연산을 제공하는 추상 자료형입니다.
Data 🗂️
1. top
: 첫 번째 요소의 포인터
2. size
: 요소의 개수
Operations ⚙️
1. push()
: 스택에 항목을 추가
2. pop()
: 스택의 맨 위 항목을 제거
3. top()
: 스택의 맨 위 항목을 확인
...
리스트(List), 스택(Stack), 큐(Queue), 덱(Deque)는 데이터가 추가되거나 제거되는 방식에 따라 아이템이 순서대로 배치되는 자료구조입니다. 한 번 아이템이 추가되면, 그 아이템은 이전이나 이후에 온 다른 요소들에 대해 상대적인 위치를 유지합니다. 이런 자료구조들을 선형 자료구조(Linear Data Structure)라고 합니다.
선형 자료구조는 두 개의 끝을 가지고 있다고 생각할 수 있습니다. 이 끝은 left
와 right
일 수도 있고, front
와 rear
일 수도 있습니다. 또한 top
와 bottom
이라고 할 수도 있지만, 중요한 것은 삽입과 삭제가 이루어지는 방식입니다. 예를 들어 어떤 구조는 한 쪽 끝에서만 자료의 삽입과 삭제가 일어날 수도 있습니다.
하나의 ADT가 여러 자료구조로 구현될 수 있듯, 상황에 맞는 구현을 선택하면 메모리 효율·실행 시간·유연성을 최적화할 수 있습니다.