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

Specs

empty?(:gb_trees.tree(any(), any())) :: boolean()

Check if priority queue is empty

Examples

iex> PriorityQueue.new |> PriorityQueue.empty?
true
Link to this function

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}}
Link to this function

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

Specs

new() :: :gb_trees.tree(any(), any())

Create a new, empty qeue

Examples

iex> PriorityQueue.new
{0, nil}

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"

Specs

Return number of elements in queue

Examples

iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.size
1

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"}]

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}