선형 자료구조인 리스트, 스택, 큐, 덱은
각각 자료의 접근위치가 다르다
순서와 위치를 가지는 항목들의 모임, 가장 자유로운 선형 자료구조
(!= 집합 : 순서가없음 )
리스트는 임의의 위치(인덱스)에서도 삽입/삭제 가 가능하다.
파이썬 리스트는 스마트한 동적 array로 구현
: 필요한 양보다 넉넉한 크기의 메모리 사용
동적 배열 구조는 용량 증가 시 새로운 배열을 생성하여 기존 배열에 복사하고,
기존 배열을 해제한다.
쌓는 더미로, 후입선출(LIFO: Last-In First-Out)의 특징,
위에서 들어와서 위로 나간다.
삽입/삭제는 리스트 맨 뒤가 유리하다.
why ? 파이썬 리스트는 뒤에 넣는 것이 자연스러워 O(1)의 연산이 발생하고,
전단에 삽입 시 뒤의 모든 항목을 한칸씩 뒤로 옮기므로 O(n)의 연산이 발생
큐는 선입선출 : FIFO (Fisrt-In Fisrt-Out)의 자료구조이다.
위에서 들어와서 아래로 나간다.
삽입은 큐의 후단(rear)에서, 삭제는 큐의 전단(front)에서 이뤄진다.
공백상태 : front == rear
포화상태 : front % M == (rear + 1) % M
리스트에 이어 선형 자료구조 중 두번째로 입출력이 자유로운 자료구조
반 시계방향 회전이 ㅣㅍㄹ요하다
큐는 rear에서만 삽입, front에서만 삭제하지만
덱은 front/rear 양쪽에서 삽입/삭제가 가능하다.