← Back to DSA
🚦
Data Structures
Queue
A FIFO (First In, First Out) structure where elements are added at the back and removed from the front.
Complexity
Time (Best)
O(1)
Time (Avg)
O(1)
Time (Worst)
O(1)
Space
O(n)
Key Points
- ›FIFO: first element enqueued is the first dequeued
- ›Enqueue (add to back) and Dequeue (remove from front) are O(1)
- ›Use a deque (double-ended queue) for O(1) on both ends
- ›Array-based queue has O(n) dequeue unless using a circular buffer or deque
- ›Essential for BFS, task scheduling, and buffering
Code Examples
Swift
struct Queue<T> {
private var elements: [T] = []
mutating func enqueue(_ element: T) {
elements.append(element)
}
@discardableResult
mutating func dequeue() -> T? {
guard !elements.isEmpty else { return nil }
return elements.removeFirst() // O(n) — use a proper deque for O(1)
}
func peek() -> T? { elements.first }
var isEmpty: Bool { elements.isEmpty }
var count: Int { elements.count }
}
var queue = Queue<Int>()
queue.enqueue(1); queue.enqueue(2); queue.enqueue(3)
print(queue.peek()!) // 1
queue.dequeue()
print(queue.count) // 2Practice Problems
Implement Queue using Stacks
EasyLeetCode ↗
Design Circular Queue
MediumLeetCode ↗
Number of Recent Calls
EasyLeetCode ↗
Sliding Window Maximum
HardLeetCode ↗