35#ifndef __priorityq_heap_h_
36#define __priorityq_heap_h_
40#define PQkey PQHeapKey
41#define PQhandle PQHeapHandle
42#define PriorityQ PriorityQHeap
44#define pqNewPriorityQ(leq) __gl_pqHeapNewPriorityQ(leq)
45#define pqDeletePriorityQ(pq) __gl_pqHeapDeletePriorityQ(pq)
60#define pqInit(pq) __gl_pqHeapInit(pq)
61#define pqInsert(pq,key) __gl_pqHeapInsert(pq,key)
62#define pqMinimum(pq) __gl_pqHeapMinimum(pq)
63#define pqExtractMin(pq) __gl_pqHeapExtractMin(pq)
64#define pqDelete(pq,handle) __gl_pqHeapDelete(pq,handle)
65#define pqIsEmpty(pq) __gl_pqHeapIsEmpty(pq)
81typedef struct PriorityQ PriorityQ;
83typedef struct { PQhandle handle; }
PQnode;
92 int (*leq)(PQkey key1, PQkey key2);
95PriorityQ *pqNewPriorityQ(
int (*leq)(PQkey key1, PQkey key2) );
96void pqDeletePriorityQ( PriorityQ *pq );
98void pqInit( PriorityQ *pq );
99PQhandle pqInsert( PriorityQ *pq, PQkey
key );
100PQkey pqExtractMin( PriorityQ *pq );
101void pqDelete( PriorityQ *pq, PQhandle handle );
104#define __gl_pqHeapMinimum(pq) ((pq)->handles[(pq)->nodes[1].handle].key)
105#define __gl_pqHeapIsEmpty(pq) ((pq)->size == 0)