1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/datatypes/queue.v

52 lines
1.2 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()
}
// array returns a array representation of the queue
pub fn (queue Queue[T]) array() []T {
return queue.elements.array()
}