자료구조 ( Data Structure )
프로그래밍 목적 중 하나는 데이터를 다루는 것이다.
데이터를 어떻게 효율적으로 저장하고, 정리하고, 사용 할 것인가는 프로그램의 성능과 직결된다.
자료구조 ( Data Structure )는 데이터를 효율적으로 저장, 관리, 처리하기 위한 방법과 형식을 의미한다.
단순히 데이터를 모아두는 것이 아니라, 프로그램이 데이터를 빠르고 효율적으로 검색, 삽입, 삭제, 수정할 수 있도록 돕는 체계적인 구죠입니다.
자료구조의 필요성
데이터의 크기와 복잡성이 커질수록 메모리 사용 효율과 연산 속도가 중요해진다.
같은 문제라도 자료구조를 어떻게 활용하느냐에 따라 프로그램의 성능이 크게 달라진다.
자료 구조는 크게 다음과 같이 분류된다.
| 종류 | 설명 |
| 선형 구조 | 데이터를 순서대로 나열 ( 배열 , 리스트 , 큐 , 스택 ) |
| 비선형 구조 | 계층적, 관계형 구조 ( 트리 , 그래프 ) |
| 정적 구조 | 크기가 고정 ( 배열 ) |
| 동적 구조 | 크기가 가변적 ( 리스트 , 연결 리스트 ) |
1. 선형 구조 ( Linear Structure )
데이터가 일렬로 나열되는 구조.
- 배열 ( Array ) : 인덱스로 접근, 빠른 조회 / 삽입·삭제가 비효율적이다.
- 연결 리스트 ( Linked List ) : 포인터로 연결 , 삽입·삭제가 효율적 / 접근시 앞에서부터 탐색하기에 느림
- 스택 ( Stack ) : 후입선출 구조 ( LIFO ) 예시 - 함수 호출 , 되돌리기
- 큐 ( Queue ) : 선입선출 구조 ( FIFO ) 예시 - 대기열 , 버퍼
2. 비선형 구조 ( Non - Linear Structure )
데이터가 계층적·망형으로 연결되는 구조
- 트리 ( Tree ) : 계층적 구조. ( 예시 - 디렉토리 구조, 탐색 트리 )
- 그래프 ( Graph ) : 정점 ( Vertex ) 과 간선 ( Edge ) 으로 구성, ( 예시 - 소셜 네트워크 , 경로 탐색 )
3. 파일 구조 ( File Structure )
- 실제 보조기억장치 ( 디스크 ) 에서 데이터를 효율적으로 관리하는 구조
- 해시 ( Hashing ) 등이 여기에 속한다.
4. 자료구조와 알고리즘의 관계
- 자료구조는 데이터를 어떻게 저장할 것인지를 정의
- 알고리즘은 저장된 데이터를 어떻게 처리할지를 정의
- 두 개념은 분리할 수 없으며, 문제 해결을 위해 항상 함께 고려된다.
5. 자료구조 선택 기준
- 데이터의 크기 ( 많은가 적은가 )
- 연산의 종류 ( 삽입·삭제가 많은가, 탐색이 많은가 )
- 메모리 사용량 ( 효율적으로 사용해야 하는가 )
- 실행 속도 ( 빠른 접근이 중요한가 )
대표적인 자료구조
| 자료구조 | 설명 | 특징 |
| 배열 ( Array ) | 연속된 메모리 공간에 동일한 자료형 저장 | 인덱스 접근이 빠르다. 크기 고정 |
| 스택 ( Stack ) | 나중에 넣은 데이터가 먼저 나오는 구조 | 되돌리기, 호출 기록 등 |
| 큐 ( Queue ) | 먼저 넣은 데이터가 먼저 나오는 구조 | 순차 처리, 대기열 등 |
| 해시 테이블 ( Hash Table ) | Key 로 값을 빠르게 찾는 구조 | 빠른 검색, 키 기반 조회 가능 |
| 트리 ( Tree ) | 계층 구조 , 부모 - 자식 관계 | 탐색 , 정렬 , 표현식 등 활용 |
| 그래프 ( Graph ) | Node 간의 연결 관계를 표현 | 네트워크 , 경로 탐색 등 |
| 연결 리스트 ( Linked List ) | 다음 데이터에 대한 참조를 가지는 Node | 삽입 / 삭제에 용이하다 |
| 순차 리스트 ( Sequential List ) | 데이터를 순서대로 저장하되, 크기가 동적 | 추가/삭제 용이 , 탐색 느림 |
'⭐C Sharp > 📂▼자료구조' 카테고리의 다른 글
| HashSet<T> (0) | 2025.10.08 |
|---|