-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpriority_queue.h
More file actions
59 lines (42 loc) · 1.25 KB
/
priority_queue.h
File metadata and controls
59 lines (42 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// MIT License
// Copyright (c) 2022 Anotra
// https://github.com/Anotra/priority_queue
#pragma once
#ifndef PRIORITY_QUEUE_H
#define PRIORITY_QUEUE_H
#include <stdlib.h>
typedef struct priority_queue priority_queue;
typedef unsigned priority_queue_id;
typedef enum {
priority_queue_min = 0,
priority_queue_max = 1,
} priority_queue_flags;
priority_queue *priority_queue_create(
size_t key_size, size_t val_size,
int(*cmp)(const void *a, const void *b),
priority_queue_flags flags);
void priority_queue_destroy(priority_queue *queue);
size_t priority_queue_length(priority_queue *queue);
void priority_queue_set_max_capacity(
priority_queue *queue,
size_t capacity);
priority_queue_id priority_queue_push(
priority_queue *queue,
void *key, void *val);
priority_queue_id priority_queue_peek(
priority_queue *queue,
void *key, void *val);
priority_queue_id priority_queue_pop(
priority_queue *queue,
void *key, void *val);
priority_queue_id priority_queue_get(
priority_queue *queue,
priority_queue_id id,
void *key, void *val);
int priority_queue_del(
priority_queue *queue,
priority_queue_id id);
int priority_queue_update(priority_queue *queue,
priority_queue_id id,
void *key, void *val);
#endif //! PRIORITY_QUEUE_H