메모리할당/성능/사용편의성 기반으로 비교 배열 : 연속 메모리, 느린 액세스, 고정 크기 링크드리스트 : 비연속적 메모리, 느린 액세스, 동적 크기
메모리할당
배열 : ‘고정된 메모리 할당구조’ => 배열을 만드는 동안 메모리가(Stack Section) 한번(Compile time)에
할당됨 [Static Memory Allocation]
- 장점 : 인덱스별 요소에 효율적인 액세스가 가능해짐
- 단점 : 전체 배열을 메모리의 새 위치로 복사해야하는 배열크기조절시 문제가 발생
링크드리스트 : ‘동적 크기의 메모리 할당구조’ => 새로운 Node 가 추가될(heap Section) 때 (Run time)
할당됨 [Dynamic Memory Allocation] - 장점 : 메모리 오버헤드시에 배열보다 유리함
- 단점 : 개별적 Node 할당으로 연결된 목록에 수명이 제각각
성능 배열 : 모든 요소에 대해 일정한(O(1)) 액세스 가능 링크드리스트 : 순회로 인한 느린 (O(n)) 선형시간 액세스 발생
- 배열에서 요소에 추가 또는 삭제시 요소의 이동이 필요하며, 작업이 배열 중간에 수행경우 시간이 많이 소요 됨
- 링크드 리스트는 참조만 하면 되어서 삽입 및 삭제 시간이 빠름
사용편의성 배열 : 배열의 크기가 고정되거나 예측 가능하고 요소에 빠른 액세스가 필요 시 링크드 리스트 : 데이터 구조가 자주 확장 축소 되거나 삽입 및 삭제 성능의 액세스 시간보다 중요시 더 적합함