Queues
First in first out (FIFO)
ADT
- Data
- Items
- Number of items
- Front and back
- Operations
enqueue(item)
: Inserts element in back of queuedequeue()
: Removes and returns from front of queuesize()
isEmpty()
Implementations
Array
- Characteristics
- Fixed Size
- Stores similar elements
- Access through front index
- Performance
enqueue(item)
: O(1)dequeue()
: O(1)size()
: O(1)isEmpty()
: O(1)
- Pros/Cons
- Pros: Constant time to add and remove elements
- Cons:
- Limited space
- Rightward drift problem
Circular Array
- Has front and back of queue go around in a circle
- Uses the mod operator
- Prevents the rightward drift problem
Linked List
- Characteristics
- Flexible Size
- Stores Similar Elements
- Access through front pointer
- Performance: Same as array for doubly linked with tail
- Pros/Cons
- Pros
- Constant time to add and remove elements
- Variable size
- Cons
- More Memory
- Pros
Use Cases
- Print queue
- Task scheduling by OS
- Packet forwarding by routers