summaryrefslogtreecommitdiff
path: root/src/01/01a/priority_queue_test.c
diff options
context:
space:
mode:
authormo khan <mo.khan@gmail.com>2020-06-29 13:02:17 -0600
committermo khan <mo.khan@gmail.com>2020-06-29 13:02:17 -0600
commit7510ecbb65edfdb46a57169f3bedc21a3296dac5 (patch)
tree8a060afd3b8923b452c03b365099b19848e4d00e /src/01/01a/priority_queue_test.c
parentc131d50cbdd8a0c7164de60bf03530c15ded9676 (diff)
Split src/test code
Diffstat (limited to 'src/01/01a/priority_queue_test.c')
-rw-r--r--src/01/01a/priority_queue_test.c86
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());
+}