Head.H
typedef struct _cycque
{
int *data;
int front;
int rear;
int size;
}CycQue, *cycque;
cycque InitCycQueue(int maxsize);
void EnQueue(cycque Q, int num);
int DeQueue(cycque Q);
void PrintCycQueue(cycque Q);
Function.C
cycque InitCycQueue(int maxsize)
{
cycque Q = (cycque)malloc(sizeof(CycQue));
Q->data = (int*)malloc(sizeof(int)*maxsize);
Q->size = maxsize;
Q->front = 0;
Q->rear = 0;
return Q;
}
void EnQueue(cycque Q, int num)
{
Q->data[Q->rear] = num;
Q->rear = (Q->rear + 1) % Q->size;
}
int DeQueue(cycque Q)
{
int tempval = Q->data[Q->front];
Q->front = (Q->front + 1) % Q->size;
return tempval;
}
void PrintCycQueue(cycque Q)
{
int i;
for (i = Q->front; i <= Q->rear; i++)
{
printf("%d ", Q->data[i]);
}
printf("\n");
}
Main.C
int main()
{
cycque Q = InitCycQueue(10);
int i;
for (i = 0; i < 17; i++)
{
EnQueue(Q, i);
}
PrintCycQueue(Q);
DeQueue(Q);
PrintCycQueue(Q);
return 0;
}