Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
18
Task/Priority-queue/C/priority-queue-2.c
Normal file
18
Task/Priority-queue/C/priority-queue-2.c
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
typedef struct _pq_node_t {
|
||||
long int key;
|
||||
struct _pq_node_t *next, *down;
|
||||
} pq_node_t, *heap_t;
|
||||
|
||||
extern heap_t heap_merge(heap_t, heap_t);
|
||||
extern heap_t heap_pop(heap_t);
|
||||
|
||||
#define NEW_PQ_ELE(p, k) \
|
||||
do { \
|
||||
(p) = (typeof(p)) malloc(sizeof(*p)); \
|
||||
((pq_node_t *) (p))->next = ((pq_node_t *) (p))->down = NULL; \
|
||||
((pq_node_t *) (p))->key = (k); \
|
||||
} while (0)
|
||||
|
||||
#define HEAP_PUSH(p, k, h) \
|
||||
NEW_PQ_ELE(p, k); \
|
||||
*(h) = heap_merge(((pq_node_t *) (p)), *(h))
|
||||
Loading…
Add table
Add a link
Reference in a new issue