1. 배열(array)

배열의 각 데이터를 배열 요소라 하고 배열의 위치를 인덱스라고 한다.

 

(1) 장점

메모리 영역에 연속적으로 존재한다.

 

(2) 단점

배열의 개수를 결정하면 확대 또는 축소할 수 없다.

 

2. 동적 배열(vector)

배열과 유사하지만 크기(capacity)를 능동적으로 조절할 수 있다.

메모리 영역에 연속적으로 존재한다.

배열 요소(size)가 용량(capacity)보다 많아지면 데이터를 통째로 복사해서 새로운 메모리 영역으로 이동한다.

이 때, 새로운 메모리 영역에서 Capacity는 Size의 크기의 1.5배 ~ 2배이다.

 

(1) 장점

배열의 개수를 능동적으로 확대 또는 축소할 수 있다.

 

(2) 단점

배열 요소가 많아지면(size > capacity) 통째로 다른 영역으로 복사해야되므로 리소스 소모가 발생함.

중간 삽입 / 삭제가 비효율적으로 작동함.

(요소를 밀어내면서 불필요한 복사가 자주 일어남)

 

3. 이중 연결 리스트(list)

데이터가 메모리 영역에 불연속적으로 분포함.

각 노드에 이전 / 이후 노드의 위치를 포인터의 형태로 저장하고 있음.

헤더가 마지막 노드과 처음 노드에 연결되어 있음.

 

(1) 장점

중간 삽입/삭제가 효율적으로 작동함.

 

(2) 단점

임의 접근(Random Access)이 불가.