#📚 자료구조란
일반적인 프로그래밍의 경우
- 문제 이해 및 분석
- 프로그램 변수 설계
- 프로그램 논리 설계 (알고리즘, 순서도)
- 프로그램 코딩
- 프로그램 실행 및 디버깅
여기서 자료구조는 프로그램 변수 설계 에 해당하는데
- 자료 객체, 속성을 파악하고
- 자료들 간의 상관관계, 처리연산 정의 및 구현 하는 것에 대한 체계적, 효율적 방법 제시해준다.
자료구조의 자료형
|자료형|제공하는 자료객체 집합|정의된 연산 예|컴퓨터 내부 표현| |:—:|:—|:—:|:—:| |정수|소수점을 포함하지 않는 수들의 모임|+, -, *, /, %, ++, —, (등) |고정소수점 표현| |실수|소수점을 포함하는 수들의 모임|+, -, *, /, %, ++, —, (등) |부동소수점 표현| |문자|컴퓨터 시스템에 정의된 문자 집합|+, -, <, >, (등)|ASCII 코드 표현| |배열|같은 자료형의 자료들의 모임|x[i]|동일한 객체들의 순차표현| |구조체|다른 자료형의 자료들의 모임|x.member|이질형 객체들의 순차표현|
#📚 자료구조의 분류
- 프로그래밍 언어에서 제공하는 자료형(기본적인 자료객체 표현)
- 단순 자료형 : 정수형, 실수형, 문자형, 논리형, 포인트형
- 구조적 자료형 : 배열, 구조체, 스트링 등
- 자료구조 과목에서 다루는 자료구조들 (자료객체 집합의 관리구조 표현)
- 선형리스트 구조의 자료구조
- 순차리스트 : 순차적 사상으로 구현된 순서리스트
- 연결리스트 : 비순차적 사상으로 구현된 순서리스트
- 스택 : 후입선출(LIFO) 구조의 리스트
- 큐 : 선입선출(FIFO) 구조의 리스트
- 비선형리스트 구조의 자료구조
- 트리, 이진트리 : 이진탐색트리, m-원 탐색 트리, 히프 등
- 그래프 : 방향성 그래프, 무방향성 그래프 등
- 해시테이블
- 인덱스 트리 : AVL 트리, B 트리, B+ 트리, 레드-블랙트리 등
#📚 C에서의 자료구조 (라이브러리)
현재 C언어에서는 자료구조를 지원하지 않는다. 따라서 자료구조를 사용하기 위해서는 직접 구현해야 한다. 그렇지만 자료구조를 지원하는 서드파티 라이브러리가 있다.
바로 GLib
(glibc와 혼동 조심)
GLib 와 glibc의 비교
||GLib|glibc| |:—:|:—|:—| |자료구조|배열, 큐, 연결리스트, hash table, 트리 등|큐, 리스트, 트리 등| |객체 시스템|GObject|-| |IO|iostream, 파일 입출력|fopen, fwrite, fread, fclose 등|
#📚 C++에서의 자료구조 (STL)
C++11 표준 이후 컨테이너(자료구조)와 알고리즘을 표준 라이브러리로 제공한다.
- STL 란
- Standard Template Library 표준 템플릿 라이브러리
템플릿이란 : c++