Games-EternalLands
view release on metacpan or search on metacpan
src/bheap.h view on Meta::CPAN
/*** Header File for the Binary Heap Implementation ***/
/*
* Shane Saunders
*/
#include "heap_info.h" /* Defines the universal heap structure type. */
/* This implementation stores the binary heap in a 1 dimensional array. */
/*** Structure Definitions ***/
/* Frontier set items in Dijkstra's algorithm stored in the binary heap
* structure.
*/
typedef struct {
int item; /* vertex number is used for the item. */
long key; /* distance is used as the key. */
} bheap_item_t;
/* Binary heap structure for frontier set in Dijkstra's algorithm.
* a[] - stores (distance, vertex) pairs of the binary heap.
* p[] - stores the positions of vertices in the binary heap a[].
* n - is the size of the binary heap.
*/
typedef struct {
bheap_item_t *a;
int *p;
int n;
long key_comps;
} bheap_t;
/*** Function prototypes. ***/
/* Binary heap functions. */
/* bh_alloc() allocates space for a binary heap of size n and initialises it.
* Returns a pointer to the binary heap.
*/
bheap_t *bh_alloc(int n);
/* bh_free() frees the space taken up by the binary heap pointed to by h.
*/
void bh_free(bheap_t *h);
/* bh_min() returns the item with the minimum key in the binary heap pointed to
* by h.
*/
int bh_min(bheap_t *h);
/* bh_insert() inserts an item and its key value into the binary heap pointed
* to by h.
*/
void bh_insert(bheap_t *h, int item, long key);
/* bh_delete() deletes an item from the binary heap pointed to by h.
*/
void bh_delete(bheap_t *h, int item);
/* bh_decrease_key() decreases the value of 'item's key and then performs
* sift-down until 'item' has been relocated to the correct position in the
* binary heap.
*/
void bh_decrease_key(bheap_t *h, int item, long new_key);
void bh_dump(bheap_t *h);
/*** Alternative interface via the universal heap structure type. ***/
extern const heap_info_t BHEAP_info;
#endif
( run in 0.492 second using v1.01-cache-2.11-cpan-5511b514fd6 )