stella v0.3.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.

Arne Andersson work: http://user.it.uu.se/~hansh/arne1.pdf

Link to this section Summary

Functions

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

Link to this function

insert(queue, element, priority)

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)

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

Create a new, empty qeue

Examples

iex> PriorityQueue.new
{0, nil}

Return peek element of queue

Examples

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

Return number of elements in queue

Examples

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

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

Remove element from queue with the higest priority

Examples

iex> PriorityQueue.new |> PriorityQueue.insert("Do homework", 4) |> PriorityQueue.top
{0, nil}