Heap
Impleementation of Heap data structure
has Callable &.cmp
The comparator function
has Positional[Any] @.data
The array with the heap data
method new
method new(
+@arr is copy
) returns MuReceives a array and transforms that array in a Heap (O(n))
method push
method push(
$new
) returns MuAdd a ney value on the Heap
method pop
method pop() returns MuRemoves and returns the first element of the heap
method peek
method peek() returns MuReturns the first element of the heap
method all
method all() returns MuPops the Heap until its empty
Heap
A simple perl6 module implementing the heap data structure.
my Heap $heap .= new: 9, 7, 5, 3, 1;
$heap.push: 8;
say $heap.pop; # 1
say $heap.pop; # 3
say $heap.pop; # 5
say $heap.all # (7, 8, 9)my Heap[-*] $heap .= new: <9 7 5 3 1>;
$heap.push: 8;
say $heap.pop; # 9
say $heap.pop; # 8
say $heap.pop; # 7my Heap[{$^b <=> $^a}] $heap .= new: <9 7 5 3 1>;
$heap.push: 8;
say $heap.pop; # 9
say $heap.pop; # 8
say $heap.pop; # 7my Heap[*<order>] $heap .= new:
{:something<ble>, :order<2>},
{:something<bla>, :order<1>},
{:something<bli>, :order<3>},
{:something<blu>, :order<5>},
;
$heap.push: {:something<blo>, :order<4>},
say $heap.pop; # {:something<bla>, :order<1>}
say $heap.pop; # {:something<ble>, :order<2>}
say $heap.pop; # {:something<bli>, :order<3>}