#include <stdio.h>
#define MAXSIZE 100
typedef struct cqueue
{
int front;
int rear;
void* data[MAXSIZE];
}cqueue;
void InitQueue(cqueue* );
int QueueEmpty(cqueue* );
int QueueLength(cqueue* );
void GetFront(cqueue*, void** );
void EnQueue(cqueue*, void* );
void DeQueue(cqueue*, void** );
void ClearQueue(cqueue* );
#include <stdio.h>
#include <string.h>
#include "circle_queue.h"
void InitQueue(cqueue* cq)
{
cq->front = cq->rear = -1;
memset(cq->data, 0, sizeof(cq->data));
}
int QueueEmpty(cqueue* cq)
{
if(cq->front == cq->rear)
return 1;
else
return 0;
}
int QueueEmpty(cqueue* cq)
{
return (cq->rear = cq->front + MAXSIZE) % MAXSIZE;
}
void GetFront(cqueue* cq, void**)
{
if(QueueEmpty(cq)) return;
*e = cq->data[ca->front + 1];
}
void EnQueue(cqueue* cq, void* e)
{
if((cq->rear + 1) % MAXSIZE == cq->front)
return;
cq->rear = (cq->rear + 1) % MAXSIZE;
cq->data[cq->rear] = e;
}
void DeQueue(cqueue* cq, void** e)
{
if(QueueEmpty(cq)) return;
*e = cq->data[cq->front + 1];
cq->front = (cq->front + 1) % MAXSIZE;
}
void ClearQueue(cqueue* cq)
{
while(!QueueEmpty(cq))
{
void* tmp;
DeQueue(cq, &tmp);
}
}