📚 자료구조(Data Structure) 정리
이번 포스팅에서는 자료구조(Data Structure)에 대해 공부한 내용을 정리해보려고 한다.
원래 자료구조는 알고리즘의 선수과목이지만, 함께 묶어서 이해하는 것이 더 자연스럽다고 생각하여 같이 정리한다.
📌 자료구조(Data Structure)란?
데이터를 효율적으로 저장하고 접근하고 수정, 관리하기 위한 방식이다.
📌 추상적 자료형(ADT)과 자료구조의 관계
자료구조를 제대로 이해하려면 추상적 자료형(Abstract Data Type, ADT) 개념이 중요하다.
✔️ 추상적 자료형(ADT)이란?
- 데이터의 형태와 연산을 수학적으로 정의한 개념적 모델
- "무엇을 할 수 있는가?"에 초점
✔️ 자료구조란?
- ADT에서 정의한 연산을 실제로 구현한 것
- "어떻게 구현하는가?"에 초점
💡 예시: 스택(Stack)
- 추상적 자료형ADT:
- 연산: push, pop
- 특징: 후입선출(LIFO)
- 자료구조:
- 배열이나 연결 리스트로 구현된 스택
- 실제 프로그램에서는 콜 스택(Call Stack) 등으로 사용됨
📌 자료구조의 종류
자료구조는 여러 기준으로 나눌 수 있지만, 대표적으로 다음과 같이 구분된다.
1️⃣ 선형 자료구조 (Linear Data Structure)
데이터가 일렬로 연결된 구조
- 배열 (Array)
- 연결 리스트 (Linked List)
- 스택 (Stack)
- 큐 (Queue)
- 덱 (Deque)
2️⃣ 비선형 자료구조 (Non-linear Data Structure)
데이터가 계층적 또는 복잡한 관계를 가지는 구조
- 트리 (Tree)
- 트라이 (Trie)
- 그래프 (Graph)
3️⃣ 연관(키-값) 자료구조
데이터를 키(Key) - 값(Value) 형태로 저장
- 맵 (Map) / 연관 배열 (Associative Array)
- 해시 테이블 (Hash Table)
4️⃣ 기타 분류
- 혼합 자료구조 (Composite Data Structure)
📌 정리
- 자료구조는 데이터를 효율적으로 다루기 위한 방법
- ADT는 개념적 정의, 자료구조는 구현
- 문제에 따라 적절한 자료구조 선택이 매우 중요하다