[Interview] Data Structure
선형, 비선형 자료구조
선형 자료구조(Linear Data Structure)
자료들이 선형(Linear)한 순서로 배치되어 있는 자료 구조
이는 데이터 간의 관계가 1대1로 연결되어 있으며, 각 요소가 바로 앞 또는 바로 뒤의 요소와 직접적으로 연결되어 있는 형태를 의미 
- 배열 (Array)
- 동일한 자료형의 요소들이 연속적인 메모리 공간에 저장
- 각 요소는 인덱스를 사용하여 직접적으로 접근 가능
- 예)
int[] arr = {1, 2, 3, 4, 5};
- 연결 리스트 (Linked List)
- 각 노드가 데이터와 다음 노드를 가리키는 포인터로 이루어진 구조
- 각 노드는 직전 노드와 직후 노드와 연결
- 예)
1 -> 2 -> 3 -> 4 -> 5
- 스택 (Stack)
- 데이터를 저장하는 일종의 선형 자료구조로, Last In First Out (LIFO)
- 데이터의 삽입과 삭제가 한쪽 끝(top)에서 이루어짐
- 예)
push(1), push(2), push(3), pop() -> 3, push(4)
- 큐 (Queue)
- 데이터를 저장하는 일종의 선형 자료구조로, First In First Out (FIFO)
- 데이터의 삽입은 한쪽 끝(rear)에서, 삭제는 다른 쪽 끝(front)에서 이루어짐
- 예)
enqueue(1), enqueue(2), enqueue(3), dequeue() -> 1, enqueue(4)
- 덱 (Deque, Double-ended Queue)
- 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조
- 큐(Queue)와 스택(Stack)의 특징을 모두 가지고 있음
- 예)
addFirst(1), addLast(2), removeFirst() -> 1, addLast(3), removeLast() -> 3
비선형 자료구조(NoneLinear Data Structure)
데이터 간의 관계가 선형적이지 않은 자료 구조를 의미
비선형 자료구조에서는 각 요소들이 특정한 순서나 계층 구조에 따라 배치 ❌
- 그래프 (Graph)
- 그래프는 정점(Vertex, Node)과 간선(Edge)으로 구성된 자료 구조로, 각 정점은 서로 연결되어 있음
- 방향 그래프(Directed Graph)와 무방향 그래프(Undirected Graph)로 나뉠 수 있음
- 그래프는 순환 혹은 비 순환일 수 있음
- 예) 소셜 네트워크에서 친구 관계를 표현하는 그래프
- 트리 (Tree)
- 트리는 계층적인 구조를 가진 자료 구조로, 하나의 루트 노드에서 시작하여 여러 레벨의 자식 노드로 이어져 있음
- 각 노드는 부모-자식 관계를 가지며, 루트 노드를 제외한 모든 노드는 부모에 대한 레벨이 존재
- 이진 트리, 이진 탐색 트리 등 다양한 종류의 트리 존재
- 예) 파일 시스템의 디렉토리 구조
- 해시 테이블 (Hash Table)
- 해시 테이블은 키-값 쌍을 저장하는 자료 구조로, 각 키는 해시 함수를 통해 특정 위치에 매핑
- 충돌(Collision)을 방지하기 위한 다양한 기법이 사용
- 해시 테이블은 효율적인 검색, 삽입, 삭제 연산을 제공
- 예) 데이터베이스에서 인덱싱에 사용되는 해시 테이블
- 힙 (Heap)
- 힙은 완전 이진 트리의 일종으로, 최솟값이나 최댓값을 빠르게 찾아내기 위해 사용
- 최소 힙(Min Heap)과 최대 힙(Max Heap)으로 나뉠 수 있음
- 힙은 주로 우선순위 큐 등에서 사용
- 예) 운영체제에서의 프로세스 스케줄링
- 그래프와 트리를 기반으로 하는 다양한 구조
- 이외에도 그래프와 트리를 변형한 다양한 자료 구조들이 존재
- 예) 이진 힙, 트라이(Trie), AVL 트리, B-트리 등
This post is licensed under CC BY 4.0 by the author.