47 lines
1.1 KiB
V
47 lines
1.1 KiB
V
module datatypes
|
|
|
|
pub struct Queue<T> {
|
|
mut:
|
|
elements LinkedList<T>
|
|
}
|
|
|
|
// is_empty checks if the queue is empty
|
|
pub fn (queue Queue<T>) is_empty() bool {
|
|
return queue.elements.is_empty()
|
|
}
|
|
|
|
// len returns the length of the queue
|
|
pub fn (queue Queue<T>) len() int {
|
|
return queue.elements.len()
|
|
}
|
|
|
|
// peek returns the head of the queue (first element added)
|
|
pub fn (queue Queue<T>) peek() ?T {
|
|
return queue.elements.first()
|
|
}
|
|
|
|
// last returns the tail of the queue (last element added)
|
|
pub fn (queue Queue<T>) last() ?T {
|
|
return queue.elements.last()
|
|
}
|
|
|
|
// index returns the element at the given index of the queue
|
|
pub fn (queue Queue<T>) index(idx int) ?T {
|
|
return queue.elements.index(idx)
|
|
}
|
|
|
|
// push adds an element to the tail of the queue
|
|
pub fn (mut queue Queue<T>) push(item T) {
|
|
queue.elements.push(item)
|
|
}
|
|
|
|
// pop removes the element at the head of the queue and returns it
|
|
pub fn (mut queue Queue<T>) pop() ?T {
|
|
return queue.elements.shift()
|
|
}
|
|
|
|
// str returns a string representation of the queue
|
|
pub fn (queue Queue<T>) str() string {
|
|
return queue.elements.str()
|
|
}
|