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) 
   80 typedef long PQhandle;
 
   81 typedef struct PriorityQ PriorityQ;
 
   83 typedef struct { PQhandle handle; } PQnode;
 
   84 typedef struct { PQkey key; PQhandle node; } PQhandleElem;
 
   88   PQhandleElem *handles;
 
   92   int    (*leq)(PQkey key1, PQkey key2);
 
   95 PriorityQ   *pqNewPriorityQ( 
int (*leq)(PQkey key1, PQkey key2) );
 
   96 void     pqDeletePriorityQ( PriorityQ *pq );
 
   98 void     pqInit( PriorityQ *pq );
 
   99 PQhandle pqInsert( PriorityQ *pq, PQkey key );
 
  100 PQkey    pqExtractMin( PriorityQ *pq );
 
  101 void     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)