Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
I'm leaking!
  • Loading branch information
john committed Mar 23, 2018
1 parent f3dfef5 commit 683a3dc
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 20 deletions.
20 changes: 17 additions & 3 deletions queue.c
@@ -1,7 +1,10 @@
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

#include "queue.h"


Queue* create_queue() {
Queue* queue = malloc(sizeof(Queue));
queue->size = 0;
Expand All @@ -23,7 +26,7 @@ int back(Queue* queue) {
void enqueue(Queue* queue, int data) {
QueueNode* node = malloc(sizeof(QueueNode));
node->data = data;
node->next = queue->head;
node->next = NULL;
if (is_empty(queue)) {
queue->head = queue->tail = node;
} else {
Expand All @@ -44,11 +47,22 @@ int dequeue(Queue* queue) {
}

void destroy_queue(Queue* queue) {
return;
QueueNode* current = queue->head;
while (current) {
QueueNode* next = current->next;
free(current);
current = next;
}
free(queue);
}

void print_queue(Queue* queue) {
return;
QueueNode* current = queue->head;
while (current) {
printf("%d ", current->data);
current = current->next;
}
printf("\n");
}

size_t size(Queue* queue) {
Expand Down
38 changes: 21 additions & 17 deletions queue_test.c
Expand Up @@ -11,12 +11,12 @@ int test_create_queue() {
CHECK(assert_equal_int(size(queue), 0));
CHECK(assert_true(is_empty(queue)));
destroy_queue(queue);

return 0;
}

int test_enqueue() {
Queue* queue = create_queue();

enqueue(queue, 1);
CHECK(assert_equal_int(size(queue), 1));
CHECK(assert_false(is_empty(queue)));
Expand All @@ -27,31 +27,35 @@ int test_enqueue() {
CHECK(assert_equal_int(size(queue), 2));
CHECK(assert_equal_int(front(queue), 1));
CHECK(assert_equal_int(back(queue), 2));
destroy_queue(queue);

return 0;
}

int test_dequeue() {
Queue* queue = create_queue();

enqueue(queue, 1);
dequeue(queue);
CHECK(assert_true(is_empty(queue)));

for (int i = 1; i <= 10; i++) {
enqueue(queue, i);
}

dequeue(queue);
dequeue(queue);
CHECK(assert_equal_int(size(queue), 8));
CHECK(assert_equal_int(front(queue), 3));
CHECK(assert_equal_int(back(queue), 10));
return 0;
Queue* queue = create_queue();
enqueue(queue, 1);
dequeue(queue);
CHECK(assert_true(is_empty(queue)));

for (int i = 1; i <= 10; i++) {
enqueue(queue, i);
}

dequeue(queue);
dequeue(queue);
CHECK(assert_equal_int(size(queue), 8));
CHECK(assert_equal_int(front(queue), 3));
CHECK(assert_equal_int(back(queue), 10));
destroy_queue(queue);

return 0;
}

int main() {
run_test("test_create_queue", test_create_queue);
run_test("test_enqueue", test_enqueue);
run_test("test_dequeue", test_dequeue);

return 0;
}

0 comments on commit 683a3dc

Please sign in to comment.