osurs  0.0.1
priority.h
Go to the documentation of this file.
1 
20 #ifndef OSURS_DS_PRIORITY_H_
21 #define OSURS_DS_PRIORITY_H_
22 
29 typedef struct PriorityQueueNode {
30  int priority;
31  void *data;
32  int index;
34 
41 typedef struct PriorityQueue {
42  PriorityQueueNode **heap;
43  int capacity;
44  int size;
46 
53 
65  void *data);
66 
76 
87 
98 
107  PriorityQueueNode *node, int new_priority);
108 
115 
116 #endif // OSURS_DS_PRIORITY_H_
struct PriorityQueueNode PriorityQueueNode
A node in a priority queue.
PriorityQueue * priority_queue_create()
Creates a new priority queue.
Definition: priority.c:28
void * priority_queue_poll(PriorityQueue *queue)
Removes and returns the data of the element at the front of the priority queue.
Definition: priority.c:55
void priority_queue_change_priority(PriorityQueue *queue, PriorityQueueNode *node, int new_priority)
Changes the priority of a specific element in the priority queue.
Definition: priority.c:82
struct PriorityQueue PriorityQueue
A priority queue.
PriorityQueueNode * priority_queue_add(PriorityQueue *queue, int priority, void *data)
Adds an element to the priority queue.
Definition: priority.c:36
void * priority_queue_remove(PriorityQueue *queue, PriorityQueueNode *node)
Removes a specific element from the priority queue, frees the node, and returns its data.
Definition: priority.c:67
void priority_queue_free(PriorityQueue *queue)
Frees a priority queue and all of its elements.
Definition: priority.c:89
void * priority_queue_peek(PriorityQueue *queue)
Returns the data of the element at the front of the priority queue.
Definition: priority.c:48
A node in a priority queue.
Definition: priority.h:29
A priority queue.
Definition: priority.h:41