PriorityQueue (stella v0.7.1)
Documentation for PriorityQueue
data structure implemented on general balanced trees by Arne Andersson
These have no storage overhead compared to unbalanced binary trees, and
their performance is better than AVL trees.
More about GB trees on Arne Andersson work
Link to this section Summary
Functions
Check if priority queue is empty
Add a new element with priority to queue
Checkout if queue is empty
Create a new, empty qeue
Return peek element of queue
Return number of elements in queue
Checkout if queue is empty
Remove element from queue with the higest priority
Link to this section Functions
empty?(queue)
@spec empty?(:gb_trees.tree(any(), any())) :: boolean()
Check if priority queue is empty
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.empty?
true
insert(queue, element, priority)
@spec insert(:gb_trees.tree(any(), any()), any(), any()) :: :gb_trees.tree(any(), any())
Add a new element with priority to queue
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4)
{1, {4, "Do homework", nil, nil}}
is_empty(queue)
@spec is_empty(:gb_trees.tree(any(), any())) :: boolean()
Checkout if queue is empty
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.is_empty
false
iex> PriorityQueue.new |> PriorityQueue.is_empty
true
new()
@spec new() :: :gb_trees.tree(any(), any())
Create a new, empty qeue
examples
Examples
iex> PriorityQueue.new
{0, nil}
peek(queue)
@spec peek(:gb_trees.tree(any(), any())) :: any()
Return peek element of queue
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.peek
"Do homework"
size(queue)
@spec size(:gb_trees.tree(any(), any())) :: non_neg_integer()
Return number of elements in queue
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.size
1
to_list(queue)
@spec to_list(:gb_trees.tree(any(), any())) :: [{any(), any()}]
Checkout if queue is empty
examples
Examples
iex> PriorityQueue.new
iex> |> PriorityQueue.insert("Do4", 4)
iex> |> PriorityQueue.insert("Do1", 1)
iex> |> PriorityQueue.to_list
[{1, "Do1"}, {4, "Do4"}]
top(queue)
@spec top(:gb_trees.tree(any(), any())) :: :gb_trees.tree(any(), any())
Remove element from queue with the higest priority
examples
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.top
{0, nil}