자료구조 C언어 (1)
📚 자료구조란
일반적인 프로그래밍의 경우
- 문제 이해 및 분석
- 프로그램 변수 설계
- 프로그램 논리 설계 (알고리즘, 순서도)
- 프로그램 코딩
- 프로그램 실행 및 디버깅
여기서 자료구조는 프로그램 변수 설계 에 해당하는데
- 자료 객체, 속성을 파악하고
- 자료들 간의 상관관계, 처리연산 정의 및 구현 하는 것에 대한 체계적, 효율적 방법 제시해준다.
자료구조의 자료형
자료형 | 제공하는 자료객체 집합 | 정의된 연산 예 | 컴퓨터 내부 표현 |
---|---|---|---|
정수 | 소수점을 포함하지 않는 수들의 모임 | +, -, *, /, %, ++, –, (등) | 고정소수점 표현 |
실수 | 소수점을 포함하는 수들의 모임 | +, -, *, /, %, ++, –, (등) | 부동소수점 표현 |
문자 | 컴퓨터 시스템에 정의된 문자 집합 | +, -, <, >, (등) | 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++
- Standard Template Library 표준 템플릿 라이브러리