1 분 소요

📚 자료구조란

일반적인 프로그래밍의 경우

  1. 문제 이해 및 분석
  2. 프로그램 변수 설계
  3. 프로그램 논리 설계 (알고리즘, 순서도)
  4. 프로그램 코딩
  5. 프로그램 실행 및 디버깅

여기서 자료구조는 프로그램 변수 설계 에 해당하는데

  1. 자료 객체, 속성을 파악하고
  2. 자료들 간의 상관관계, 처리연산 정의 및 구현 하는 것에 대한 체계적, 효율적 방법 제시해준다.

자료구조의 자료형

자료형 제공하는 자료객체 집합 정의된 연산 예 컴퓨터 내부 표현
정수 소수점을 포함하지 않는 수들의 모임 +, -, *, /, %, ++, –, (등) 고정소수점 표현
실수 소수점을 포함하는 수들의 모임 +, -, *, /, %, ++, –, (등) 부동소수점 표현
문자 컴퓨터 시스템에 정의된 문자 집합 +, -, <, >, (등) ASCII 코드 표현
배열 같은 자료형의 자료들의 모임 x[i] 동일한 객체들의 순차표현
구조체 다른 자료형의 자료들의 모임 x.member 이질형 객체들의 순차표현

📚 자료구조의 분류

  1. 프로그래밍 언어에서 제공하는 자료형(기본적인 자료객체 표현)
    • 단순 자료형 : 정수형, 실수형, 문자형, 논리형, 포인트형
    • 구조적 자료형 : 배열, 구조체, 스트링 등
  2. 자료구조 과목에서 다루는 자료구조들 (자료객체 집합의 관리구조 표현)
    • 선형리스트 구조의 자료구조
      • 순차리스트 : 순차적 사상으로 구현된 순서리스트
      • 연결리스트 : 비순차적 사상으로 구현된 순서리스트
      • 스택 : 후입선출(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 표준 이후 컨테이너(자료구조)와 알고리즘을 표준 라이브러리로 제공한다.

  1. STL
    • Standard Template Library 표준 템플릿 라이브러리 템플릿이란 : c++