#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 8
typedef int ElemType;
typedef int State;
typedef struct
{
ElemType deta[MAXSIZE];
int front;
int rear;
} SqQueue;
State initQueue(SqQueue *Q);
State destroyQueue(SqQueue *Q);
State enQueue(SqQueue *Q, ElemType e);
State deQueue(SqQueue *Q, ElemType *e);
State printQueue(SqQueue Q);
State initQueue(SqQueue *Q)
{
Q->front = 0;
Q->rear = 0;
return OK;
}
State enQueue(SqQueue *Q, ElemType e)
{
if ((Q->rear + 1) % MAXSIZE == Q->front)
return ERROR;
Q->deta[Q->rear] = e;
Q->rear = ++Q->rear % MAXSIZE;
return OK;
}
State deQueue(SqQueue *Q, ElemType *e)
{
if (Q->front == Q->rear)
return ERROR;
*e = Q->deta[Q->front];
Q->front = ++Q->front % MAXSIZE;
return OK;
}
State printQueue(SqQueue Q)
{
int i = Q.front;
while ((i + 1) % MAXSIZE != Q.front && i != Q.rear)
{
printf("%d ", Q.deta[i]);
i = ++i % MAXSIZE;
}
return OK;
}
int main(void)
{
SqQueue queue;
int e;
initQueue(&queue);
for (int i = 0; i < 16; i++)
{
enQueue(&queue, i);
}
deQueue(&queue, &e);
printf("出列%d\n", e);
printQueue(queue);
return 0;
}