데이터는 모든 값을 의미한다. 데이터의 사용 목적에 따라 형태를 구분하고 분류해야 한다.
자료구조 (ex: Stack, Queue, Tree, Graph)
무수한 상황에서 데이터를 효율적으로 다룰 수 있는 방법
대표적인 자료구조로는 배열이 있다.
Stack
https://en.wikipedia.org/wiki/Stack_(abstract_data_type)
- LIFO (last in, first out)
- 접시구조: 나중에 쌓인 정보가 먼저 나간다. 웹사이트 뒤로 가기 / 앞으로 가기 기능이 예시이다.
Queue
https://en.wikipedia.org/wiki/Queue_(abstract_data_type)
- FIFO (first in, first out)
- 톨게이트: 먼저 들어간 정보가 먼저 나간다. 프린트(컴퓨터 임시 기억 장치)
- "Buffer": 데이터를 주고 받는 장치 간의 속도와 시간 차이로 인해 생기는 개념
Graph
- 여러 개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료 구조
- 포털 사이트의 검색 엔진, SNS에서 사람들과의 관계, 내비게이션 (길찾기)
- 무방향 / 단방향: 흔히 쌍방향을 무방향, 일방 통행을 단방향이라 한다
- 진입차수 / 진출차수: 정점에 들어오는 간선의 수 / 정점에서 나가는 간선의 수
- 자기루프: 정점에서 나간 간선이 곧바로 진입하는 경우
- 사이클: 서울 → 대전 → 부산 → 서울
Tree
- 루트(Root) 라는 하나의 꼭짓점 데이터를 시작으로 여러 개의 데이터를 간선(edge)으로 연결한 자료 구조
- 노드: 모든 개별 데이터
- 루트: 트리 구조의 시작
- 부모 노드: 상하 관계의 두 노드 중 루트에 가까운 노드
- 자식 노드: 상하 관계의 두 노드 중 루트에 먼 노드
- 리프 노드: 트리 구조의 끝 노드(자식 구조가 없는 노드)