Commit 2f46078

mo khan <mo.khan@gmail.com>
2020-06-16 04:13:15
Add function to inspect queue
1 parent 473b0f0
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");
 }
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);
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);