2007-06-05 12:10:51 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* Definitions, visible to others, of Priority Queue module: *
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
#ifndef PRIOR_Q_GH
|
|
|
|
#define PRIOR_Q_GH
|
|
|
|
|
|
|
|
typedef struct PriorQue
|
|
|
|
{
|
|
|
|
struct PriorQue *Right, *Left; /* Pointers to two sons of this node. */
|
|
|
|
void * Data; /* Pointers to the data itself. */
|
|
|
|
} PriorQue;
|
|
|
|
|
|
|
|
typedef int (*PQCompFuncType)( void *, void *); /* Comparison function. */
|
|
|
|
|
|
|
|
/* And global function prototypes: */
|
|
|
|
void PQInit(PriorQue **PQ);
|
|
|
|
int PQEmpty(PriorQue *PQ);
|
|
|
|
void PQCompFunc(PQCompFuncType NewCompFunc);
|
|
|
|
void * PQFirst(PriorQue **PQ, int Delete);
|
|
|
|
void * PQInsert(PriorQue **PQ, void * NewItem);
|
|
|
|
void * PQDelete(PriorQue **PQ, void * NewItem);
|
|
|
|
void * PQFind(PriorQue *PQ, void * OldItem);
|
|
|
|
void * PQNext(PriorQue *PQ, void * CmpItem, void * BiggerThan);
|
|
|
|
void PQPrint(PriorQue *PQ, void (*PrintFunc)());
|
|
|
|
void PQFree(PriorQue *PQ, int FreeItems);
|
|
|
|
void PQFreeFunc(PriorQue *PQ, void (*FreeFunc)(void *));
|
|
|
|
|
|
|
|
#endif /* PRIOR_Q_GH */
|