// 2018-03-04 (이름)

/***********************************************************************************************************


선형 자료의 저장방식에 따른 특성


정적배열 기반 :

장점 : 상수시간 원소접근, 캐싱 친화적

단점 : 고정적인 크기, 삽입 삭제시 복사비용 발생(데이터가 크고 많을 수록)


동적배열 기반 :

장점 : 상수시간 원소접근, 캐싱 친화적, 가변적인 크기

단점 : 삽입 삭제시 복사비용 발생(데이터가 크고 많을 수록), 용량이 한계에 다다를 때마다 재할당 및 복사 발생


연결노드 기반 : 

장점 : 가변적인 크기, 중간의 삽입 삭제 용이

단점 : 상수시간 접근 불가능(치명적), 힙의 빈번한 삭제 재할당시 단편화 우려, 캐싱 비친화적


***********************************************************************************************************


선형 자료구조의 특성에 따른 분류


배열 : 일반적으로 (뒤로 커질 때) 가장 무난한 자료구조.

정적 배열 : std::array

동적 배열 : std::vector

리스트 : 삽입 삭제에 좀 더 유연한 자료구조.

정적 리스트 : 일반 배열에 인터페이스만 갖춘 모양새

이중 연결리스트 : std::list

단일 연결리스트   : std::forward_list

원형 연결리스트


: 앞 뒤 삽입 삭제에 좀 더 유리한 자료구조. 

동적 배열의 배열 : std::deque

(일반적으로는 더블 링크드 리스트로 구현할 수 있음)


스택, 큐 : 삽입, 삭제의 위치를 제한함. std에서는 컨테이너 어댑터로 사용됨. 기본적으로는 deque 사용.

std::stack

std::queue


***********************************************************************************************************

선형 자료구조의 대표적 ADT


배열(정적) : []

배열(동적) : [],++, --, resize, reserve, push_back


리스트 : insert, erase. (단일 연결일 경우) insert_after, erase_after

접근 : ++,--, next, advance 등으로 순차 접근(sequential access) 


: push_back, pop_back, push_front, pop_front

접근 : front, back


스택 : push_back, pop_back

접근 : back


: push_back, pop_front

접근 : front


***********************************************************************************************************/


비선형구조 들어가기 전에 필요성을 느껴서 정리했다.

'프로그래밍 책 공부 > C++로 풀어쓴 자료구조' 카테고리의 다른 글

개념 - 트리, 이진 트리  (0) 2018.03.06
개념 - 더블 링크드 리스트  (0) 2018.03.06
개념 - 덱 deque  (0) 2018.03.03
개념 - 큐 queue  (0) 2018.03.03
개념 - 스택 stack  (0) 2018.03.02