Commit 8eabde7

mo khan <mo.khan@gmail.com>
2020-06-29 20:51:01
Return data instead of a Node*
1 parent 197a36f
src/01/01a/priority_queue.c
@@ -49,14 +49,14 @@ void add(PriorityQueue *queue, int priority, int data) {
 }
 
 // This function is constant time O(1)
-Node *delete_min(PriorityQueue *queue) {
+int delete_min(PriorityQueue *queue) {
   if (queue->head) {
     Node *tmp = queue->head;
     queue->head = tmp->next;
     queue->size--;
-    return tmp;
+    return tmp->data;
   }
-  return NULL;
+  return 0;
 }
 
 void destroy(PriorityQueue *queue) {
src/01/01a/priority_queue.h
@@ -14,5 +14,5 @@ typedef struct {
 PriorityQueue *initialize();
 int size(PriorityQueue *queue);
 void add(PriorityQueue *queue, int priority, int data);
-Node *delete_min(PriorityQueue *queue);
+int delete_min(PriorityQueue *queue);
 void destroy(PriorityQueue *queue);
src/01/01a/priority_queue_test.c
@@ -51,7 +51,7 @@ Ensure(PriorityQueue, removes_the_node_with_the_lowest_priority){
   add(queue, 2, 200);
 
   assert_that(size(queue), is_equal_to(3));
-  assert_that(delete_min(queue)->data, is_equal_to(100));
+  assert_that(delete_min(queue), is_equal_to(100));
   assert_that(queue->head->data, is_equal_to(200));
   assert_that(size(queue), is_equal_to(2));