Priority Queue function declarations 更多...
Priority Queue function declarations
typedef int(* pqueue_cmp_pri_f) (pqueue_pri_t next, pqueue_pri_t curr) |
typedef size_t(* pqueue_get_pos_f) (void *a) |
callback functions to get/set the position of an element
typedef pqueue_pri_t(* pqueue_get_pri_f) (void *a) |
callback functions to get/set/compare the priority of an element
typedef unsigned long long pqueue_pri_t |
priority data type
typedef void(* pqueue_print_entry_f) (FILE *out, void *a) |
debug callback function to print a entry
typedef void(* pqueue_set_pos_f) (void *a, size_t pos) |
typedef void(* pqueue_set_pri_f) (void *a, pqueue_pri_t pri) |
void pqueue_change_priority | ( | pqueue_t * | q, |
pqueue_pri_t | new_pri, | ||
void * | d | ||
) |
move an existing entry to a different priority
q | the queue |
new_pri | the new priority |
d | the entry |
void pqueue_dump | ( | pqueue_t * | q, |
FILE * | out, | ||
pqueue_print_entry_f | |||
) |
dump the queue and it's internal structure
void pqueue_free | ( | pqueue_t * | q | ) |
free all memory used by the queue
q | the queue |
pqueue_t* pqueue_init | ( | size_t | n, |
pqueue_cmp_pri_f | cmppri, | ||
pqueue_get_pri_f | getpri, | ||
pqueue_set_pri_f | setpri, | ||
pqueue_get_pos_f | getpos, | ||
pqueue_set_pos_f | setpos | ||
) |
initialize the queue
n | the initial estimate of the number of queue items for which memory should be preallocated |
cmppri | The callback function to run to compare two elements This callback should return 0 for 'lower' and non-zero for 'higher', or vice versa if reverse priority is desired |
setpri | the callback function to run to assign a score to an element |
getpri | the callback function to run to set a score to an element |
getpos | the callback function to get the current element's position |
setpos | the callback function to set the current element's position |
int pqueue_insert | ( | pqueue_t * | q, |
void * | d | ||
) |
insert an item into the queue.
q | the queue |
d | the item |
int pqueue_is_valid | ( | pqueue_t * | q | ) |
checks that the pq is in the right order, etc
void* pqueue_peek | ( | pqueue_t * | q | ) |
access highest-ranking item without removing it.
q | the queue |
void* pqueue_pop | ( | pqueue_t * | q | ) |
pop the highest-ranking item from the queue.
q | the queue |
void pqueue_print | ( | pqueue_t * | q, |
FILE * | out, | ||
pqueue_print_entry_f | |||
) |
print the queue
int pqueue_remove | ( | pqueue_t * | q, |
void * | d | ||
) |
remove an item from the queue.
q | the queue |
d | the entry |
size_t pqueue_size | ( | pqueue_t * | q | ) |
return the size of the queue.
q | the queue |