-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathqueue.c
More file actions
31 lines (26 loc) · 703 Bytes
/
Copy pathqueue.c
File metadata and controls
31 lines (26 loc) · 703 Bytes
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
#include <stdlib.h>
#include "queue.h"
Node* createNode(char ch, int freq) {
Node* node = malloc(sizeof(Node));
node->ch = ch;
node->freq = freq;
node->left = node->right = NULL;
return node;
}
void initQueue(PriorityQueue *pq) {
pq->size = 0;
}
void enqueue(PriorityQueue *pq, Node *node) {
pq->nodes[pq->size++] = node;
for (int i = pq->size - 1; i > 0; i--) {
if (pq->nodes[i]->freq < pq->nodes[i - 1]->freq) {
Node *tmp = pq->nodes[i];
pq->nodes[i] = pq->nodes[i - 1];
pq->nodes[i - 1] = tmp;
}
}
}
Node* dequeue(PriorityQueue *pq) {
if (pq->size == 0) return NULL;
return pq->nodes[--pq->size];
}