19 lines
479 B
Plaintext
19 lines
479 B
Plaintext
# Insert item into priority queue
|
|
(de insertPQ (Queue Prio Item)
|
|
(idx Queue (cons Prio Item) T) )
|
|
|
|
# Remove and return top item from priority queue
|
|
(de removePQ (Queue)
|
|
(cdar (idx Queue (peekPQ Queue) NIL)) )
|
|
|
|
# Find top element in priority queue
|
|
(de peekPQ (Queue)
|
|
(let V (val Queue)
|
|
(while (cadr V)
|
|
(setq V @) )
|
|
(car V) ) )
|
|
|
|
# Merge second queue into first
|
|
(de mergePQ (Queue1 Queue2)
|
|
(balance Queue1 (sort (conc (idx Queue1) (idx Queue2)))) )
|