30 lines
653 B
C
30 lines
653 B
C
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct heap_entry {
|
|
int key;
|
|
union {
|
|
int value;
|
|
struct {
|
|
int16_t x;
|
|
int16_t y;
|
|
};
|
|
};
|
|
};
|
|
|
|
void heap_sift_up(struct heap_entry * e, int ix);
|
|
void heap_sift_down(struct heap_entry * e, int heap_length, int ix);
|
|
void heap_append(struct heap_entry * e, int * heap_length, int key, int value);
|
|
void heap_append_xy(struct heap_entry * e, int * heap_length, int key, int x, int y);
|
|
int heap_find(struct heap_entry * e, int length, int ix, int key);
|
|
struct heap_entry heap_extract_max(struct heap_entry * e, int * heap_length);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|