Commit d0b2301

mo khan <mo.khan@gmail.com>
2020-06-16 04:36:28
Extract destroy function and rename count -> size()
1 parent 4ae6a61
assignments/01/priority_queue.c
@@ -17,7 +17,7 @@ Node *create_node(int priority, int data) {
   return node;
 }
 
-int count(PriorityQueue *queue) {
+int size(PriorityQueue *queue) {
   return queue->size;
 }
 
@@ -62,3 +62,15 @@ void inspect(PriorityQueue *queue) {
   }
   printf("*******\n");
 }
+
+void destroy(PriorityQueue *queue) {
+  Node *current = queue->head;
+  Node *tmp;
+
+  while(current) {
+    tmp = current;
+    current = current->next;
+    if (tmp)
+      free(tmp);
+  }
+}
assignments/01/priority_queue.h
@@ -13,7 +13,8 @@ typedef struct {
 
 PriorityQueue *initialize();
 Node *create_node(int priority, int data);
-int count(PriorityQueue *queue);
+int size(PriorityQueue *queue);
 void add(PriorityQueue *queue, Node *node);
 Node *delete_min(PriorityQueue *queue);
 void inspect(PriorityQueue *queue);
+void destroy(PriorityQueue *queue);
assignments/01/priority_queue_test.c
@@ -20,8 +20,8 @@ AfterEach(PriorityQueue){ }
 Ensure(PriorityQueue, returns_size) {
   PriorityQueue *queue = initialize();
 
-  assert_that(count(queue), is_equal_to(0));
-  free(queue);
+  assert_that(size(queue), is_equal_to(0));
+  destroy(queue);
 }
 
 Ensure(PriorityQueue, adds_a_node) {
@@ -30,9 +30,8 @@ Ensure(PriorityQueue, adds_a_node) {
 
   add(queue, node);
 
-  assert_that(count(queue), is_equal_to(1));
-  free(node);
-  free(queue);
+  assert_that(size(queue), is_equal_to(1));
+  destroy(queue);
 }
 
 Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){
@@ -45,14 +44,11 @@ Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){
   add(queue, min);
   add(queue, mid);
 
-  assert_that(count(queue), is_equal_to(3));
+  assert_that(size(queue), is_equal_to(3));
   assert_that(delete_min(queue), is_equal_to(min));
   assert_that(queue->head, is_equal_to(mid));
 
-  free(max);
-  free(mid);
-  free(min);
-  free(queue);
+  destroy(queue);
 };
 
 TestSuite *priority_queue_tests() {