Queue/Definition: Difference between revisions
Content added Content deleted
(→{{header|Picat}}: Split into subsections.) |
|||
Line 6,221: | Line 6,221: | ||
=={{header|Vlang}}== |
=={{header|Vlang}}== |
||
Updated to Vlang version 0.2.2 |
Updated to Vlang version 0.2.2 |
||
<lang |
<lang vlang>const max_tail = 256 |
||
struct Queue { |
struct Queue<T> { |
||
mut: |
mut: |
||
data [] |
data []T |
||
tail int |
|||
head int |
head int |
||
} |
} |
||
fn (mut queue Queue) |
fn (mut queue Queue<T>) push(value T) { |
||
if queue. |
if queue.tail >= max_tail || queue.tail < queue.head { |
||
return |
return |
||
} |
} |
||
println(' |
println('push: $value') |
||
queue.data |
queue.data << value |
||
queue. |
queue.tail++ |
||
} |
} |
||
fn (mut queue Queue) |
fn (mut queue Queue<T>) pop() !T { |
||
if queue. |
if queue.tail > 0 && queue.head < queue.tail { |
||
result := queue.data[queue.head] |
result := queue.data[queue.head] |
||
queue.head++ |
queue.head++ |
||
println('Dequeue: top of Queue was $ |
println('Dequeue: top of Queue was $result') |
||
return result |
return result |
||
} |
} |
||
return error('Queue Underflow!!') |
return error('Queue Underflow!!') |
||
} |
} |
||
fn (queue Queue) peek() |
fn (queue Queue<T>) peek() !T { |
||
if queue. |
if queue.tail > 0 && queue.head < queue.tail { |
||
result := queue.data[queue.head] |
result := queue.data[queue.head] |
||
println('Peek: top of Queue is $ |
println('Peek: top of Queue is $result') |
||
return result |
return result |
||
} |
} |
||
return error('Out of Bounds...') |
return error('Out of Bounds...') |
||
} |
} |
||
fn (queue Queue) empty() bool { |
fn (queue Queue<T>) empty() bool { |
||
return queue. |
return queue.tail == 0 |
||
} |
} |
||
fn main() { |
fn main() { |
||
mut queue := Queue{} |
mut queue := Queue<f64>{} |
||
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' }) |
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' }) |
||
queue. |
queue.push(5.0) |
||
queue. |
queue.push(4.2) |
||
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' }) |
println('Queue is empty? ' + if queue.empty() { 'Yes' } else { 'No' }) |
||
queue.peek() or { return } |
queue.peek() or { return } |
||
queue. |
queue.pop() or { return } |
||
queue. |
queue.pop() or { return } |
||
queue. |
queue.push(1.2) |
||
⚫ | |||
} |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre>Queue is empty? Yes |
<pre>Queue is empty? Yes |