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