#include "queue.h"

struct Queue
{
	size_t head;
	size_t tail;
	size_t size;
	void** e;
};

Queue* Queue_Create(size_t n)
{
	Queue* q = (Queue *)malloc(sizeof(Queue));
	q->size = n;
	q->head = q->tail = 1;
	q->e = (void **)malloc(sizeof(void*) * (n + 1));
	return q;
}

int Queue_Empty(Queue* q)
{
	return (q->head == q->tail);
}

int Queue_Full(Queue* q)
{
	return (q->head == q->tail + 1) || (q->head == 1 && q->tail == q->size);
}
#include "queue.h"

struct Queue
{
	size_t head;
	size_t tail;
	size_t size;
	void** e;
};

Queue* Queue_Create(size_t n)
{
	Queue* q = (Queue *)malloc(sizeof(Queue));
	q->size = n;
	q->head = q->tail = 1;
	q->e = (void **)malloc(sizeof(void*) * (n + 1));
	return q;
}

int Queue_Empty(Queue* q)
{
	return (q->head == q->tail);
}
--- 
+++ 
@@ -21,3 +21,8 @@
 {
 	return (q->head == q->tail);
 }
+
+int Queue_Full(Queue* q)
+{
+	return (q->head == q->tail + 1) || (q->head == 1 && q->tail == q->size);
+}
Add helper function Queue Full implementation
