Rs
Module 4Stack, Queue & DequeLesson 16 of 2320 min

Queue with VecDeque

push_back + pop_front; BFS-ready queue.

Why not Vec for queue?

remove(0) is O(n). VecDeque gives O(1) at both ends.

rust
use std::collections::VecDeque;

fn main() {
    let mut q = VecDeque::new();
    q.push_back(1);
    q.push_back(2);
    let x = q.pop_front(); // Some(1)
    println!("dequeued={x:?} rest={q:?}");
}
Output
dequeued=Some(1) rest=[2]

BFS skeleton

rust
while let Some(node) = q.pop_front() {
    for nxt in neighbors(node) {
        if seen.insert(nxt) { q.push_back(nxt); }
    }
}

Queue only API discipline

Interview: enqueue back, dequeue front — do not use random indexing unless deque problem.

Challenge

Simulate BFS distance on a line graph 0..n-1 with edges i->i+1, start 0.

Tips
  • VecDeque for O(1) front
  • pop_front enqueue pattern
  • pair with HashSet visited

Try it live

Queue with VecDequeRust 2021
Loading editor…
Output
Press Run to compile and execute.