Skip to content

문제 9 · 연결 리스트 vs 배열

문제 9 [3점]

연결 리스트linked list가 배열 기반 리스트array-based list와 비교해 가지는 차이점을, 추상 데이터 타입abstract data type(ADT) 및 성능을 중심으로 서술하세요.

풀이 및 해설

두 자료구조 모두 원소들을 순서대로 담는 리스트 ADT를 구현하지만, 내부 저장 방식이 달라 성능 특성이 크게 갈립니다.

저장 방식

  • 배열 기반 리스트: 원소를 연속된 메모리에 저장. 인덱스로 위치를 계산합니다.
  • 연결 리스트: 각 원소를 노드node에 담고, 노드마다 다음 노드를 가리키는 포인터pointer로 이어 붙입니다. 메모리에 흩어져 있어도 됩니다.

성능 비교

연산배열 기반연결 리스트
임의 접근random access (i번째)O(1)O(n)
위치를 아는 곳에 삽입·삭제O(n) (원소 이동)O(1) (포인터만 바꿈)
맨 앞 삽입·삭제O(n)O(1)
탐색search (값으로 찾기)O(n)O(n)
  • 임의 접근: 배열은 주소 계산으로 즉시 접근하지만, 연결 리스트는 앞에서부터 포인터를 따라가야 하므로 O(n).
  • 삽입·삭제: 배열은 뒤 원소를 밀어야 해 O(n)이지만, 연결 리스트는 해당 위치를 알고 있으면 포인터 몇 개만 바꿔 O(1).

그 밖의 차이

  • 크기: 배열은 고정 용량(초과 시 재할당·복사 비용), 연결 리스트는 필요할 때마다 노드를 붙여 동적으로 커집니다.
  • 메모리 오버헤드: 연결 리스트는 노드마다 포인터를 저장해 추가 메모리를 씁니다.
  • 캐시 지역성cache locality: 배열은 연속 저장이라 캐시 효율이 좋고, 연결 리스트는 흩어져 있어 순회 시 캐시 미스가 잦습니다.
임의 접근은 배열(O(1)), 위치를 아는 삽입·삭제는 연결 리스트(O(1))가 유리
PDF