[자료구조] Array vs LinkedList

잘 알고 있다고 생각했는데 막상 말로 설명하려니 두서없이 말했던 게 생각나서 기록합니다.
Array와 LinkedList 모두 연속해 있는 선형자료구조로 데이터를 나열한다는 공통점을 가지고 있지만, 그 특징에 있어서는 차이가 있기 때문에 데이터를 저장한 후 어떻게 사용할 것인지에 따라 다릅니다.

Array

LinkedList

추가) Dynamic Array

현업에서는 데이터의 lookup, 삽입, 삭제 모두 빈번히 일어나기 때문에 자료구조의 Array와 Linked List를 둘 다 쓰지 않는다고 한다. (라고 모 기업 입사설명회에서 CTO님이 하시는 말씀을 들은 바가 있다. 자바의 ArrayList를 주로 쓰신다고…)

예를 들어, 자바스크립트, 파이썬(List)의 경우 언어 자체에서 제공하는 동적배열(Dynamic Array) 이기 때문에, 자유롭게 확장할 수 있는 구조를 가져 Resizing 이슈에 대해 고민할 필요가 없다. 자바의 경우 ArrayList , C++의 경우 STL의 vector 을 사용하면, 일정 배열의 크기가 차면 내부적으로 크기를 자동으로 늘려주어 코드를 짜는 사람이 Resizing에 대해 고민하지 않아도 된다.

(엄밀히 말하면 이러한 동적 배열 역시도 자료구조의 Array를 기반으로 하는 것은 맞지만, 언어 내부적으로 이 Array의 크기를 일정 크기로 자연스럽게 늘려주는 것이다.)

참고 URL

Array vs LinkedList

파이썬 컬렉션:리스트