더북(TheBook)

4.2 동적 배열과 연결 리스트

동적 배열과 연결 리스트의 차이를 정리한 다음 표를 살펴봅시다.

▼ 표 4-1 동적 배열과 연결 리스트의 차이

 

동적 배열

연결 리스트

삽입 및 삭제

O(n)

O(1)

탐색

O(1)

O(n)

1. 삽입 및 삭제

동적 배열은 배열의 마지막에 데이터를 추가하거나 삭제하는 경우를 제외하고 O(n)의 성능을 가지는 반면, 연결 리스트는 단지 연산 상수 한 번만으로도 데이터를 추가하거나 삭제할 수 있습니다. 당연히 빅오는 O(1)입니다.

2. 탐색

동적 배열은 인덱싱이라는 단 한 번의 강력한 연산으로 해당 인덱스의 데이터에 접근할 수 있었습니다. 빅오는 O(1)이지요. 하지만 연결 리스트는 해당 요소의 데이터에 접근하기 위해 처음부터 모든 노드를 차례로 순회해야 했습니다. 빅오는 O(n)입니다.

이처럼 동적 배열과 연결 리스트의 특징은 정반대입니다. 자료 구조의 특징을 잘 이해했나요? 그렇다면 상황에 맞게 알맞은 자료 구조를 선택할 수 있습니다.

Tip 연결 리스트는 어디에 쓰나요?


연결 리스트는 그 자체만으로는 동적 배열에 비해 쓰임새가 적은 편입니다. 삽입과 삭제가 빈번한 경우에 사용을 고민해 볼 수 있겠지요. 연결 리스트를 사용한 예로는 OS에서 힙 메모리를 할당 및 해제할 때 이중 연결 리스트로 구현한 경우가 있습니다. 연결 리스트가 중요한 이유는 다른 자료 구조를 구현하는 토대가 되기 때문인데요. 뒤에서 배울 트리는 대부분 연결 리스트로 구현됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.