Priority Queue and Heap implementation for Crystal Lang
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
spec
src
.gitignore
.travis.yml
LICENSE
README.md
shard.yml

README.md

Crystal Lang Priority Queue

Build Status

Usage

Simple priority queue.

  • Higher numbers pop first
  • lower numbers shift first
  • always insert using push or << to maintain validity
require 'priority-queue'

queue = Priority::Queue(String).new
queue.push 10, "Insert 1"
queue.push 20, "Insert 2"

queue.pop.value # => "Insert 2"
queue.pop.value # => "Insert 1"

A named priority queue where newer items with the same name replace existing items. The highest of the two priorities is inherited by the new item.

require 'priority-queue'

queue = Priority::NamedQueue(String).new
queue.push 20, "Insert 1", :named
queue.push 20, "Insert 2"
queue.push 10, "Insert 3", :named

queue.size # => 2

queue.pop.value # => "Insert 3"
queue.pop.value # => "Insert 2"