Queue/Definition: Difference between revisions

(→‎{{header|Picat}}: Split into subsections.)
Line 6,221:
=={{header|Vlang}}==
Updated to Vlang version 0.2.2
<lang govlang>const max_depthmax_tail = 256
 
struct Queue<T> {
mut:
data []f32 = [f32(0)].repeat(max_depth)T
depthtail int
head int
}
 
fn (mut queue Queue<T>) enqueuepush(value f32T) {
if queue.depthtail >= max_depthmax_tail || queue.depthtail < queue.head {
return
}
println('Enqueuepush: ${value:3.2f}')
queue.data[queue.depth] =<< value
queue.depthtail++
}
 
fn (mut queue Queue<T>) dequeuepop() ?f32!T {
if queue.depthtail > 0 && queue.head < queue.depthtail {
result := queue.data[queue.head]
queue.head++
println('Dequeue: top of Queue was ${result:3.2f}')
return result
}
return error('Queue Underflow!!')
}
 
fn (queue Queue<T>) peek() ?f32!T {
if queue.depthtail > 0 && queue.head < queue.depthtail {
result := queue.data[queue.head]
println('Peek: top of Queue is ${result:3.2f}')
return result
}
return error('Out of Bounds...')
}
 
fn (queue Queue<T>) empty() bool {
return queue.depthtail == 0
}
 
fn main() {
mut queue := Queue<f64>{}
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' })
queue.enqueuepush(5.0)
queue.enqueuepush(4.2)
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' })
queue.peek() or { return }
queue.dequeuepop() or { return }
queue.dequeuepop() or { return }
queue.enqueuepush(1.2)
}</lang>
}
 
</lang>
{{out}}
<pre>Queue is empty? Yes
338

edits