#include <stdio.h>
#include <stdlib.h>
#define MAXQSIZE 100
typedef struct{
int * base;
int front;
int rear;
}SqQueue;
void InitQueue(SqQueue * Q){
Q -> base = (int *)malloc(MAXQSIZE * sizeof(int));
if(! Q -> base) exit(0);
Q -> front = 0;
Q -> rear = 0;
}
int QueueLength(SqQueue Q){
return (Q.rear - Q.front + MAXQSIZE ) % MAXQSIZE;
}
bool EnQueue(SqQueue * Q, int e){
if((Q -> rear + 1) % MAXQSIZE == Q -> front)
return false;
Q -> base[Q -> rear] = e;
Q -> rear = (Q -> rear + 1) % MAXQSIZE;
return true;
}
bool DeQueue(SqQueue * Q, int * e){
if(Q -> rear == Q -> front)
return false;
* e = Q -> base[Q -> front];
Q -> front = (Q -> front + 1) % MAXQSIZE;
return true;
}
int main(){
SqQueue Q;
InitQueue(&Q);
EnQueue(&Q, 4);
EnQueue(&Q, 1);
printf("%d\n", QueueLength(Q));
printf("%d ", Q.base[0]);
printf("%d\n", Q.base[1]);
int e;
DeQueue(&Q, &e);
printf("%d\n", QueueLength(Q));
printf("%d", Q.base[0]);
return 0;
}