When there is a lot dequeue and enqueue at the same time, it is better to use array. The discard space can be reused. This makes better use of memory space. When you cannot predict how long the circular queue will be, you use circular linked list. It is flexible to expand or shrink.