🖍️ 자료구조 정리
배열
-
특징
- 연속적인 메모리 블록에 데이터 요소 저장
- 요소는 색인화되어 색인별로 빠른 액세스 가능
- 고정 크기 (Javascript 배열은 동적)
-
사용시기
- 인덱스 사용하여 요소에 빠르게 액세스해야 하는 경우
- 요소의 개수를 미리 알고 있는 경우
리스트
-
특징
- 각 노드에는 목록의 다음 노드에 대한 참조와 데이터가 포함되어 있는 노드로 구성
- 동적으로 크기를 늘리거나 줄이기 가능
- 랜덤 액세스를 지원 X
-
사용시기
- 동적 데이터 구조 필요한 경우
- 목록의 처음이나 중간에 요소를 자주 추가하거나 제거하는 경우
해시
-
특징
- 키-값 쌍을 저장
- 키를 기반으로 효율적인 데이터 검색 제공
- 연결 목록 배열 또는 개방형 주소 지정을 사용하여 구현
-
사용시기
- 고유 키를 값과 연결해야 하는 경우
- 빠른 조회, 삽입, 삭제가 필요한 경우
스택
-
특징
- 후입선출 (LIFO) 원칙
- 스택의 맨 위에서 요소가 추가(push) 되고 제거(pop)
-
사용시기
- 실행 취소 메커니즘, 구문 분석 및 역추적 알고리즘 (LIFO 순서로 요소 관리)
큐
-
특징
- 선입선출 (FIFO) 원칙
- 요소는 추가(push) 되고 전면에서 제거(shift)
-
사용시기
- 스케줄링, 버퍼링, 너비우선탐색 알고리즘 등 (LIFO 순서로 요소 관리)
힙
-
특징
- 트리가 완전한 이진 트리인 특수한 트리 기반 데이터 구조
- 일반적으로 max-heaps 와 min-heaps 의 두가지 유형 구현
- 상위 노드는 하위 노드보다 크거나 같거나(최대힙) 작거나 같다(최소힙)
-
사용시기
- 최대 또는 최소 요소에 자주 액세스 하는 경우
- 우선순위 큐에서는 우선순위가 가장 높은 큐 요소가 먼저 처리
- 힙 정렬 알고리즘