자료구조란?
- "자료"는 데이터를 의미하고 "구조"는 이러한 자료를 어떻게 효율적으로 저장하고 관리할 것인지에 대한 방법이나 형식을 의미한다.
합쳐서 자료구조는 데이터 저장 및 관리의 방법을 의미한다. 대표적 예시로는 Array, Linked List 등이 있다.
- 자료구조는 효율적인 데이터 저장과 탐색을 위해 설계된 추상적인 개념이다. 쉽게 말해, 데이터를 다루기 위해서는 알고리즘이 필요하고, 이를 효율적으로 처리하기 위해서 자료구조를 활용한다고 생각하면 된다.
핵심 요약
자료구조는 추상적인 개념이며, 해당 개념을 활용해서 만들어지는건 결국 알고리즘이다.
자료구조는 크게 두 가지로 나눌 수 있다.
1. 선형 자료구조
- 배열 (Array): 고정된 크기의 연속된 메모리 공간에 데이터를 저장하는 자료구조로, 인덱스를 통해 빠르게 접근할 수 있습니다.
- 연결 리스트 (Linked List): 노드들이 포인터로 연결된 구조로, 삽입과 삭제가 배열보다 효율적이지만, 인덱스를 통한 접근 속도는 느립니다.
- 스택 (Stack): LIFO(Last In, First Out) 구조로, 가장 마지막에 삽입된 데이터가 먼저 삭제됩니다. 예를 들어, 웹 브라우저의 뒤로 가기 기능이 스택을 이용합니다.
- 큐 (Queue): FIFO(First In, First Out) 구조로, 가장 먼저 삽입된 데이터가 먼저 삭제됩니다. 예를 들어, 프린터의 인쇄 대기열이 큐를 사용합니다.
2. 비선형 자료구조
- 트리 (Tree): 계층 구조를 가진 자료구조로, 루트 노드를 중심으로 자식 노드가 연결됩니다. 예를 들어, 파일 시스템이나 데이터베이스 인덱스 등이 트리 구조를 사용합니다.
- 그래프 (Graph): 노드(정점)와 엣지(간선)로 구성된 구조로, 네트워크, 소셜 네트워크, 지도 경로 찾기 등에 활용됩니다.
- 해시 테이블 (Hash Table): 키-값 쌍으로 데이터를 저장하며, 해시 함수를 통해 키를 인덱스로 변환하여 빠르게 데이터를 검색할 수 있는 구조입니다. 데이터베이스의 인덱싱 등에 활용됩니다.
효율적인 자료구조 선택은 프로그램의 성능과 자원 사용에 큰 영향을 미친다.