stella v0.6.0 PriorityQueue
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)
Specs
empty?(:gb_trees.tree(any(), any())) :: boolean()
Check if priority queue is empty
Examples
iex> PriorityQueue.new |> PriorityQueue.empty?
true
insert(queue, element, priority)
Specs
insert(:gb_trees.tree(any(), any()), any(), any()) :: :gb_trees.tree(any(), any())
Add a new element with priority to queue
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4)
{1, {4, "Do homework", nil, nil}}
is_empty(queue)
Specs
is_empty(:gb_trees.tree(any(), any())) :: boolean()
Checkout if queue is empty
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.is_empty
false
iex> PriorityQueue.new |> PriorityQueue.is_empty
true
new()
Specs
new() :: :gb_trees.tree(any(), any())
Create a new, empty qeue
Examples
iex> PriorityQueue.new
{0, nil}
peek(queue)
Specs
peek(:gb_trees.tree(any(), any())) :: any()
Return peek element of queue
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.peek
"Do homework"
size(queue)
Specs
size(:gb_trees.tree(any(), any())) :: non_neg_integer()
Return number of elements in queue
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.size
1
to_list(queue)
Specs
to_list(:gb_trees.tree(any(), any())) :: [{any(), any()}]
Checkout if queue is empty
Examples
iex> PriorityQueue.new
iex> |> PriorityQueue.insert("Do4", 4)
iex> |> PriorityQueue.insert("Do1", 1)
iex> |> PriorityQueue.to_list
[{1, "Do1"}, {4, "Do4"}]
top(queue)
Specs
top(:gb_trees.tree(any(), any())) :: :gb_trees.tree(any(), any())
Remove element from queue with the higest priority
Examples
iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.top
{0, nil}