#include<stdio.h>#include<stdlib.h>#define MaxSize 10#define TRUE 1#define ERROR 0typedef int Status;typedef int ElemType;typedef struct{    ElemType *base;  //数组基地址,动静分配内存    int front;   //头指针    int rear;      //尾指针}Queue;Status InitQueue(Queue* Q);   //初始化Status InsertQueue(Queue* Q, ElemType e);// 入队Status DeleteQueue(Queue* Q, ElemType* e); //出队Status LengthQueue(Queue* Q);  //获取队长void DstoryQueue(Queue *Q); //销毁队int main(){    Queue Q;    ElemType e;    int n, a;    if (InitQueue(&Q) == 1)        printf("创立循环队列胜利!\n");    printf("输出插入队尾元素个数:");    scanf("%d", &n);    printf("输出插入队尾元素:");    if (n != 0)      //判断队空    {        for (int i = 0; i < n; i++)        {            scanf("%d", &e);            a = InsertQueue(&Q, e);        }    }    else        a = -1;    if (a == 1) {        printf("插入胜利!\n");        printf("队长为:%d\n", LengthQueue(&Q));    }        if (a==0)        printf("队已满!无奈持续插入了!\n");    if (DeleteQueue(&Q, &e) == 1)    {        printf("删除队首元素为:%d\n", e);    }    else        printf("队为空!无奈持续删除了!\n");    printf("删除后队长为:%d\n", LengthQueue(&Q));    DstoryQueue(&Q);    printf("销毁结束!");    return 0;}Status InitQueue(Queue* Q){    Q->base = (Queue*)malloc(sizeof(ElemType) * MaxSize);    if (!Q->base)        exit(0);    Q->front = Q->rear = 0;    return TRUE;}Status InsertQueue(Queue *Q, ElemType e){    if ((Q->rear + 1) % MaxSize == Q->front)        return ERROR;    Q->base[Q->rear] = e;    Q->rear = (Q->rear + 1) % MaxSize;    return TRUE;}Status DeleteQueue(Queue* Q, ElemType* e){    if (Q->front == Q->rear)        return ERROR;    *e = Q->base[Q->front];    Q->front = (Q->front + 1) % MaxSize;    return TRUE;}Status LengthQueue(Queue* Q){    return ((Q->rear-Q->front+MaxSize)%MaxSize);}void DstoryQueue(Queue* Q){    free(Q->base);    Q->base = NULL;    Q->front = Q->rear = 0;}