- 배열(Array)
- 일련의 요소를 연속된 메모리 공간에 저장하는 자료구조입니다.
- 인덱스를 사용하여 빠른 요소 접근이 가능하며, 요소들은 순차적으로 저장됩니다.
- 크기가 고정되어 있어 삽입 및 삭제가 오버헤드가 크고 비효율적일 수 있습니다.
- 연결 리스트(Linked List)
- 노드들이 포인터로 서로 연결된 자료구조입니다.
- 각 노드는 데이터와 다음 노드를 가리키는 포인터로 구성되어 있습니다.
- 중간에 요소를 추가하거나 삭제하기 용이하지만, 임의의 위치에 빠르게 접근하는 것이 어려울 수 있습니다.
- 스택(Stack)
- 후입선출(LIFO, Last In First Out) 구조를 가진 자료구조입니다.
- 데이터를 넣는 작업을 푸시(push), 데이터를 꺼내는 작업을 팝(pop)이라고 합니다.
- 함수 호출의 실행 순서, 역추적, 괄호 검사 등에 사용됩니다.
- 큐(Queue)
- 선입선출(FIFO, First In First Out) 구조를 가진 자료구조입니다.
- 데이터를 넣는 작업을 인큐(enqueue), 데이터를 꺼내는 작업을 디큐(dequeue)라고 합니다.
- 프로세스 스케줄링, 네트워크 버퍼 등 다양한 분야에서 사용됩니다.
- 트리(Tree)
- 계층적인 구조를 갖는 자료구조로, 루트 노드에서 시작하여 각 노드가 여러 자식 노드를 가질 수 있습니다.
- 이진 트리(Binary Tree), 이진 탐색 트리(Binary Search Tree), 힙(Heap) 등이 트리의 종류입니다.
- 데이터 검색, 정렬, 계층적 데이터 저장 등에 활용됩니다.
- 해시 테이블(Hash Table)
- 키(key)와 값(value)으로 데이터를 저장하는 자료구조입니다.
- 해시 함수를 사용하여 키를 해시로 변환하고, 그 해시를 인덱스로 이용하여 값을 저장하고 검색합니다.
- 빠른 검색 속도를 가지며, 키-값 쌍의 저장과 검색이 매우 빠릅니다.
- 그래프(Graph)
- 정점(Vertex)과 간선(Edge)으로 이루어진 자료구조입니다.
- 네트워크, 지도, 소셜 네트워크 등의 관계를 표현하고 탐색하는 데 사용됩니다.
- 방향성, 순환 여부에 따라 다양한 종류의 그래프가 있습니다.
각 자료구조는 데이터를 특정한 방식으로 조직화하여 적합한 상황에 사용됩니다. 선택한 자료구조는 데이터의 특성, 작업의 효율성, 메모리 사용 등을 고려하여 결정해야 합니다.
'CS' 카테고리의 다른 글
| 상속이란 (0) | 2023.11.16 |
|---|---|
| 객체지향이란 (0) | 2023.11.16 |
| 값 형식과 참조 형식의 차이점 (0) | 2023.11.16 |
| 스택, 힙 메모리와 차이점 (0) | 2023.11.16 |
| 선택 정렬과 버블 정렬 (0) | 2023.11.16 |