procedure pq: create priority queue procedure pqget: remove first priority queue element procedure pqgen: generate priority queue elements procedure pqput: insert priority queue element
link pqueue
May 3, 2001; William S. Evans and Gregg M. Townsend
This file is in the public domain.
These procedures manipulate priority queues.
pq(L) returns a priority queue containing the elements
in L. L is a list (or table or set) of pqelem
records, each containing a data and priority field.
If L is &null, pq() returns an empty priority queue.
pqget(Q) returns and removes the highest priority element
from Q. Q is a priority queue returned by pq().
pqput(Q, e) adds element e (a pqelem record) to Q.
pqgen(Q) generates the elements in Q in priority order.
pqelem(d, p) constructs a record with data d and priority p.
____________________________________________________________
Priority queues are implemented as heaps. Heaps are
implemented as lists in the usual fashion.