#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
typedef int Item;
struct queue_type
{
Item* contents;
int front;
int rear;
int size;
int counter;
};
typedef struct queue_type* Queue;
static void terminate(const char* message);
Queue create(int size);
void destroy(Queue q);
void destroy(Queue q);
bool is_empty(Queue q);
bool is_full(Queue q);
void push(Queue q, Item i);
Item pop(Queue q);
int main(void)
{
return 0;
}
static void terminate(const char* message)
{
printf("%s\n", message);
exit(EXIT_FAILURE);
}
Queue create(int size)
{
Queue q = malloc(sizeof(struct queue_type));
if (q ==NULL)
{
terminate("Error in create:stack could not be create.");
}
q->contents = malloc(size*sizeof(Item));
if (q->contents==NULL)
{
free(q);
terminate("Error in create:stack could not be create.");
}
q->front = -1;
q->rear = -1;
q->size = size;
q->counter = 0;
return q;
}
void destroy(Queue q)
{
free(q->contents);
free(q);
}
bool is_empty(Queue q)
{
if (q->counter=0)
{
return true;
}
else
{
return false;
}
}
bool is_full(Queue q)
{
if (q->counter == q->size)
{
return true;
}
else
{
return false;
}
}
void push(Queue q, Item i)
{
if (is_full(q)==true)
{
terminate("Error in push:stack is full.");
}
q->counter++;
q->rear++;
q->rear %= q->size;
q->contents[q->rear] = i;
}
Item pop(Queue q)
{
if (is_empty(q)==true)
{
terminate("Error in pop:stack is full.");
}
q->counter--;
q->front++;
q->front %= q->size;
return q->contents[q->front];
}