-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpriority_queue.h
More file actions
58 lines (46 loc) · 1.99 KB
/
priority_queue.h
File metadata and controls
58 lines (46 loc) · 1.99 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
#ifndef PRIORITY_QUEUE_H
#define PRIORITY_QUEUE_H
typedef struct huff_data_t {
const char *element;
int weight;
} huff_data_t;
typedef struct huff_node_t {
struct huff_data_t *data;
struct huff_node_t *next;
} huff_node_t;
/*
+------------------+
| PriorityQueue |
+------------------+
| head: ---------->|
| +------------------+ +------------------+ +------------------+
| | HuffNode | | HuffNode | | HuffNode |
| +------------------+ +------------------+ +------------------+
| | data: ---------->-----| data: ---------->-----| data: ----------> NULL
| | +------------------+| +------------------+| +------------------+
| | | HuffData || | HuffData || | HuffData |
| | +------------------+| +------------------+| +------------------+
| | | element: "..." || | element: "..." || | element: "..." |
| | | weight: ... || | weight: ... || | weight: ... |
| | +------------------+| +------------------+| +------------------+
| | || || |
| | next: -------------->|| | next: ---------->|| | next: ----------> NULL
| | || || |
| +----------------------++----------------------++----------------------+
|
| size: ...
+------------------+
*/
typedef struct priority_queue_t {
huff_node_t *head;
int size;
} priority_queue_t;
priority_queue_t *create_priority_queue();
int is_empty(priority_queue_t *queue);
void insert_node(priority_queue_t *queue, const char *element, int weight);
void delete_node(priority_queue_t *queue, huff_node_t **previous, huff_node_t **current);
void remove_top_node(priority_queue_t *queue, huff_node_t **topNode);
void destroy_priority_queue(priority_queue_t *queue);
void print_huffnode(huff_node_t *node);
void print_queue(priority_queue_t *queue);
#endif