00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef PQ__H
00012 #define PQ__H
00013
00020
00027 typedef struct pq {
00028 int (*cmp)(void **,void **);
00029 int nitems;
00030 int maxitems;
00031 void **bottom;
00032 void **heap;
00033 }PQ;
00034
00035 extern void swap(void **,void **);
00036 extern void ReheapUp(PQ* q);
00037 extern void ReheapDown(PQ* q);
00038 extern void InitPQ(PQ *q,int ne,int (*c)(void **,void **));
00039 extern int Insert(PQ* q,void *item);
00040 extern int Delete(PQ* q,void **target);
00041 extern void *Get(PQ* q);
00042 extern int NumElem(PQ* q);
00043 extern int Replace(PQ* q,void **target,void *item);
00044 extern int Remove(PQ* q,void **target,int (*cmp)(void **,void **),void *item);
00045 extern void *GetI(PQ* q,int i);
00046
00049 #endif