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()
 | 
						|
}
 |