use std::collections::VecDeque;
fn main() {
// Create an empty queue using VecDeque
let mut queue: VecDeque<i32> = VecDeque::new();
// Enqueue elements (push elements to the back of the queue)
queue.push_back(10);
queue.push_back(20);
queue.push_back(30);
queue.push_back(40);
println!("Queue after enqueueing: {:?}", queue);
// Dequeue elements (pop elements from the front of the queue)
if let Some(front) = queue.pop_front() {
println!("Dequeued element: {}", front);
} else {
println!("Queue is empty, nothing to dequeue.");
}
println!("Queue after dequeueing: {:?}", queue);
// Peek at the front element without removing it
if let Some(front) = queue.front() {
println!("Front element: {}", front);
} else {
println!("Queue is empty, no front element.");
}
// Peek at the back element without removing it
if let Some(back) = queue.back() {
println!("Back element: {}", back);
} else {
println!("Queue is empty, no back element.");
}
// Check if the queue is empty
if queue.is_empty() {
println!("The queue is empty.");
} else {
println!("The queue is not empty.");
}
// Get the length of the queue
println!("Queue length: {}", queue.len());
}
/*
run:
Queue after enqueueing: [10, 20, 30, 40]
Dequeued element: 10
Queue after dequeueing: [20, 30, 40]
Front element: 20
Back element: 40
The queue is not empty.
Queue length: 3
*/