Commit d0b2301
Changed files (3)
assignments
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() {