-
Stack과 Queue 구현, 배열과 링크드 리스트 중 어떤 것을 이용할까?TECH/Algorithm 2021. 9. 14. 20:50
Summary
Stack : 둘 다 가능
Queue: 리스트를 이용하는 것이 일반적.
Stack & Queue
- Stack
- Array와 LinkedList 모두 구현 가능하다.
- Array
- 장점
- 메모리에 연속적으로 할당되는 특징 덕분에 캐시 지역성을 이용한 더 빠른 접근이 가능하다.
- 단점
- 사이즈가 제한되어 있다. 고정 크기 배열 경우 사이즈를 늘리기가 불가능하고, 유동 크기 배열의 경우 사이즈가 한계에 다다르면 어레이를 (일반적으로) 두배 크기로 늘리고, 기존의 요소들을 모두 복사해야하는 작업이 필요하다.
- 장점
- LinkedList
- 장점
- 사이즈에 제한 받지 않는다.
- 단점
- 배열과 달리 요소가 연속적으로 할당되지 않아 비교적 느리다.
- 포인터를 위한 추가적인 메모리 공간이 필요하다.
- 장점
- Queue
- LinkedList로 구현하는게 이상적이다.
- FIFO 이기 때문에 앞선 인덱스의 요소가 제거될 경우 모든 뒤의 요소들을 하나씩 앞으로 당겨주어야 한다. 이로 인해 배열을 사용하는 것은 비효율적이다. 포인터를 바꾸면 되는 LinkedList를 사용하는 것이 효율적이다.
- LinkedList로 구현하는게 이상적이다.
'TECH > Algorithm' 카테고리의 다른 글
왜 unbalanced binary search tree는 나쁠까? (0) 2021.09.20 - Stack