✅ 자료구조를 알아야 하는 이유
- 데이터를 체계적으로 저장하고, 효율적으로 활용하기 위해 자료구조를 사용
- 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용하라 수 있게 한다.
- 실행시간, 메모리 용량 등의 자원을 최소화하여 연산 수행하게끔 한다.
- 대부분의 자료구조는 특정 상황에 놓인 문제를 해결하는 데에 특화
- 각각의 자료구조는 각자 연산 및 목적에 특화됨
B-트리
는 데이터베이스에 효율적
라우팅 테이블
은 네트워크(인터넷, 인트라넷)에 일반적
자료구조란
- 자료구조란 여러 데이터들의 묶음을 저장하고, 사용하는 방법의 정의
- 데이터 값의 모임, 데이터 간의 관계, 데이터에 적용할 수 있는 함수나 명령을 의미
data 란?
- 데이터는 문자, 숫자, 소리, 그림, 영상 등 현실을 구성하는 모든 값.
- 데이터는 그 자체만으로 어떤 정보를 가지기 힘들다.
- 나이라는 데이터 만을 알고 있다면, 이 데이터의 주체에 대해 알 수 없음(사람, 강아지, 나무 등)
- 데이터는 분석하고 정리하여 활용해야만 의미를 가진다.
- 데이터를 사용하려는 목적에 따라 형태를 구분하고, 분류하여 사용
➡️ 데이터를 정해진 규칙없이 저장하거나, 하나의 구조로만 정리하고 활용하는 것보다 데이터를 체계적으로 정리하여 저장해두는게, 데이터 활용에 훨씬 유리
➡️ 문제 상황 예시
- 번호를 다 알지 않고, 이름만 알고도 전화를 할 수 있는 방법
- 웹 브라우저에서 뒤로 / 앞으로 가는 방법
- 게임 매칭을 잡을 때, 수많은 사람들을 통제하는 방법
자료구조의 종류와 구분
자료구조는 자료의 특성과 크기, 주요 사용법과 수행하는 연산의 종류, 구현에 필요한 기억 공간 크기에 따라 구분 될 수 있다.
1) 구현에 따른 자료 구조
- 배열
- 가장 일반적 구조. 메모리 상에 같은 타입의 자료가 연속적으로 저장됨.
- 자료값을 나타내는 가장 작은 단위가 자료를 다루는 단위.
- 튜플
- 연결 리스트
- 노드를 단위로 함.
- 노드는 자료와 다음 노드를 가르키는 참조값으로 구성됨.
- 가르키는 다음 노드가 없으면, 리스트의 끝
- 원형 연결 리스트
- 각 노드는 다음 노드를 가리키고, 마지막 노드가 처음 노드를 가리키는 연결 리스트
- 이중 연결 리스트
- 각 노드는 이전 노드와 다음 노드를 가리키는 참조값으로 구성.
- 처음 노드의 이전 노드와 마지막 노드의 다음 노드는 없음
- 환형 이중 연결 리스트
- 처음 노드가 이전 노드로 마지막 노드를 가리키고, 마지막 노드가 다음 노드로 처음 노드를 가리키는 이중 연결 리스트
- 해시 테이블
2) 구조에 따른 자료 구조
구조 | 종류 | 상세 |
---|
단순 구조 | 2진수 | |
| 정수/실수 | |
| 문자/문자열 | |
선형 구조 | 리스트(배열) | |
| 연결리스트 | 단순 연결리스트, 이중 연결리스트, 원형 연결리스트 |
| 덱 | 양쪽에서 넣기와 빼기 가능한 일반화된 선형 구조 |
| 스택 | LIFO, 자료들의나열 순서를 바꾸고 싶을 때 |
| 큐 | FIFO |
비선형구조 | 트리 | 뿌리와 뿌리 또는 다른 꼭짓점을 단 하나의 부모로 갖는 꼭짓점들로 이루어진 구조(일반 트리, 이진 트리(+힙)) |
| 그래프 | 꼭짓점과 꼭짓점을 잇는 변으로 구성 (방향그래프, 무방향 그래프) |
파일 구조 | 순차 파일, 색인 파일, 직접 파일 | |
참조1)
참조2)
이미지
정리가 잘 된 글이네요. 도움이 됐습니다.