diff options
| author | mo khan <mo.khan@gmail.com> | 2020-06-29 13:02:17 -0600 |
|---|---|---|
| committer | mo khan <mo.khan@gmail.com> | 2020-06-29 13:02:17 -0600 |
| commit | 7510ecbb65edfdb46a57169f3bedc21a3296dac5 (patch) | |
| tree | 8a060afd3b8923b452c03b365099b19848e4d00e /src/01/01a/priority_queue_test.c | |
| parent | c131d50cbdd8a0c7164de60bf03530c15ded9676 (diff) | |
Split src/test code
Diffstat (limited to 'src/01/01a/priority_queue_test.c')
| -rw-r--r-- | src/01/01a/priority_queue_test.c | 86 |
1 files changed, 7 insertions, 79 deletions
diff --git a/src/01/01a/priority_queue_test.c b/src/01/01a/priority_queue_test.c index f754c33..f443142 100644 --- a/src/01/01a/priority_queue_test.c +++ b/src/01/01a/priority_queue_test.c @@ -1,5 +1,6 @@ #include <cgreen/cgreen.h> #include <string.h> +#include "priority_queue.h" /* Implement the methods of the priority queue interface using a singly-linked list. @@ -10,73 +11,6 @@ Implement the methods of the priority queue interface using a singly-linked list Analyze the running time of the `add(x)` and `deletMin()` operations based on this implementation. */ -struct node { - int priority; - int data; - struct node *next; -}; - -typedef struct node Node; - -typedef struct { - Node *head; - int size; -} PriorityQueue; - - -// https://en.wikipedia.org/wiki/Priority_queue -static PriorityQueue *initialize() { - PriorityQueue *queue = malloc(sizeof(PriorityQueue)); - queue->size = 0; - queue->head = NULL; - return queue; -} - -static Node *create_node(int priority, int data) { - Node *node = malloc(sizeof(Node)); - node->priority = priority; - node->data = data; - node->next = NULL; - return node; -} - -// This function is constant time O(1) -static int size(PriorityQueue *queue) { - return queue->size; -} - -// This function is linear time O(n) -static void add(PriorityQueue *queue, Node *node) { - queue->size++; - - if (queue->head == NULL) { - queue->head = node; - return; - } - - Node *tmp = queue->head; - Node *prev = NULL; - - while(tmp != NULL) { - if (tmp->data > node->data) { - node->next = tmp; - if (tmp == queue->head) - queue->head = node; - else if (prev != NULL) - prev->next = node; - break; - } - prev = tmp; - tmp = tmp->next; - } -} - -// This function is constant time O(1) -static Node *delete_min(PriorityQueue *queue) { - Node *tmp = queue->head; - queue->head = tmp->next; - return tmp; -} static void inspect(PriorityQueue *queue) { Node *tmp = queue->head; @@ -87,18 +21,6 @@ static void inspect(PriorityQueue *queue) { } } -static void destroy(PriorityQueue *queue) { - Node *current = queue->head; - Node *tmp; - - while(current) { - tmp = current, current = current->next; - - if (tmp) free(tmp); - } - free(queue); -} - Describe(PriorityQueue); BeforeEach(PriorityQueue){ } AfterEach(PriorityQueue){ } @@ -148,3 +70,9 @@ TestSuite *priority_queue_tests() { return suite; } + +int main(int argc, char **argv) { + TestSuite *suite = create_test_suite(); + add_suite(suite, priority_queue_tests()); + return run_test_suite(suite, create_text_reporter()); +} |
