enum boolean {FLASE,TRUE};
typedef enum boolean Bool;
typedef int ElementType;
struct queue
{
int rear,front;
ElementType *elements;
int MaxSize;
};
typedef struct queue Queue;
void InitQueue(Queue *,int);
void FreeQueue(Queue *);
void MakeEmpty(Queue *);
Bool IsEmpty(Queue *);
Bool IsFull(Queue *);
int Length(Queue *);
int EnQueue(Queue *,ElementType);
ElementType DeQueue(Queue *);
ElementType GetFront(Queue *);
#include<stdio.h>
#include<stdlib.h>
#include"queue.h"
void InitQueue(Queue *Q,int sz)
{
Q->MaxSize = sz;
Q->elements = (ElementType*)malloc(sizeof(ElementType) * Q->MaxSize);
Q->front = Q->rear = 0;
}
void FreeQueue(Queue *Q)
{
free(Q->elements);
}
void MakeEmpty(Queue *Q)
{
Q->front = Q->rear = 0;
}
Bool IsEmpty(Queue *Q)
{
return (Bool)(Q->front == Q->rear);
}
Bool IsFull(Queue *Q)
{
return (Bool)(Q->front == (Q->rear+1) % (Q->MaxSize));
}
int Length(Queue *Q)
{
return (Q->rear - Q->front + Q->Maxsize) % (Q->MaxSize);
}
int EnQueue(Queue *Q,ElementType item)
{
if(!IsFull(Q))
{
Q->elements[Q->rear] = itme;
Q->rear = (Q->rear +1) % (Q->MaxSize);
return 0;
}
else
return -1;
}
ElementType DeQueue(Queue *Q)
{
ElementType item;
if(!IsEmpty(Q))
{
item=Q->elements[Q->front];
Q->front = (Q->front+1) % (Q->MaxSize);
return item;
}
else
{
printf("error");
exit(1);
}
}
ElementType GetFront(Queue *Q)
{
if(!IsEmpty(Q))
{
return Q->elements[Q->front];
}
else
{
printf("error");
exit(1);
}
}