11 lines
416 B
Plaintext
11 lines
416 B
Plaintext
push = Function[{queue, priority, item},
|
|
queue = SortBy[Append[queue, {priority, item}], First], HoldFirst];
|
|
pop = Function[queue,
|
|
If[Length@queue == 0, Null,
|
|
With[{item = queue[[-1, 2]]}, queue = Most@queue; item]],
|
|
HoldFirst];
|
|
peek = Function[queue,
|
|
If[Length@queue == 0, Null, Max[queue[[All, 1]]]], HoldFirst];
|
|
merge = Function[{queue1, queue2},
|
|
SortBy[Join[queue1, queue2], First], HoldAll];
|