diff options
| author | mo khan <mo.khan@gmail.com> | 2020-06-15 22:13:15 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-06-15 22:13:15 -0600 |
| commit | 2f460787b2dd6130507c1da1123cd4f029cefce0 (patch) | |
| tree | b8a84281ff43c78c72e6ecb9bf5841cf0c32b002 | |
| parent | 473b0f0761845a09900278c5dc4a570fd7321614 (diff) | |
Add function to inspect queue
| -rw-r--r-- | assignments/01/priority_queue.c | 27 | ||||
| -rw-r--r-- | assignments/01/priority_queue.h | 2 | ||||
| -rw-r--r-- | assignments/01/priority_queue_test.c | 8 |
3 files changed, 28 insertions, 9 deletions
diff --git a/assignments/01/priority_queue.c b/assignments/01/priority_queue.c index 0b57d50..aa7fb6b 100644 --- a/assignments/01/priority_queue.c +++ b/assignments/01/priority_queue.c @@ -1,5 +1,6 @@ -#include "priority_queue.h" +#include <stdio.h> #include <stdlib.h> +#include "priority_queue.h" PriorityQueue *initialize() { PriorityQueue *queue = malloc(sizeof(PriorityQueue)); @@ -29,19 +30,35 @@ void add(PriorityQueue *queue, Node *node) { } Node *tmp = queue->head; + Node *prev = NULL; while(tmp != NULL) { if (tmp->data > node->data) { - tmp->next = node; - if (tmp == queue->head) { + node->next = tmp; + if (tmp == queue->head) queue->head = node; - } + else if (prev != NULL) + prev->next = node; break; } + prev = tmp; tmp = tmp->next; } } Node *delete_min(PriorityQueue *queue) { - return queue->head; + Node *tmp = queue->head; + queue->head = tmp->next; + return tmp; +} + +void inspect(PriorityQueue *queue) { + Node *tmp = queue->head; + + printf("*******\n"); + while(tmp) { + printf("%d\n", tmp->data); + tmp = tmp->next; + } + printf("*******\n"); } diff --git a/assignments/01/priority_queue.h b/assignments/01/priority_queue.h index 6d20149..5cb48b9 100644 --- a/assignments/01/priority_queue.h +++ b/assignments/01/priority_queue.h @@ -11,9 +11,9 @@ typedef struct { int size; } PriorityQueue; - PriorityQueue *initialize(); Node *create_node(int priority, int data); int count(PriorityQueue *queue); void add(PriorityQueue *queue, Node *node); Node *delete_min(PriorityQueue *queue); +void inspect(PriorityQueue *queue); diff --git a/assignments/01/priority_queue_test.c b/assignments/01/priority_queue_test.c index 4984967..07318d6 100644 --- a/assignments/01/priority_queue_test.c +++ b/assignments/01/priority_queue_test.c @@ -42,13 +42,15 @@ Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){ Node *max = create_node(3, 300); add(queue, max); + inspect(queue); add(queue, min); + inspect(queue); add(queue, mid); + inspect(queue); assert_that(count(queue), is_equal_to(3)); - - Node *deleted = delete_min(queue); - assert_that(deleted, is_equal_to(min)); + assert_that(delete_min(queue), is_equal_to(min)); + assert_that(queue->head, is_equal_to(mid)); free(max); free(mid); |
