#include <stdio.h>
#include <stdlib.h>
typedef struct Queue {
    int *data;      
    int front;      
    int rear;      
    int maxSize;
  int flag;
} Queue;
//创建队列
void BuildQueue(Queue *Queue, int MaxSize)
{
    Queue->data = (int*)malloc(MaxSize * sizeof(int));
    Queue->front = Queue->rear = 0;
    Queue->maxSize = MaxSize;
  Queue->flag = 0;
}
//入队
void EnQueue(Queue *Queue, int item)
{
  if( Queue->flag == 1 && Queue->rear+1 > Queue->front)
     printf("队列溢出了\n");
  if(Queue->rear == Queue->maxSize - 1){
    Queue->flag = 1;
  }
    Queue->rear = (Queue->rear + 1) % Queue->maxSize;
    Queue->data[Queue->rear] = item;
    printf("入队元素:%d\n", item);
}
int DeQueue(Queue *Queue)
{
    if (Queue->front == Queue->rear && Queue->flag == 0) {
        printf("队列为空!\n");
        return -1;
    }
  if(Queue->front == Queue->maxSize - 1)
    Queue->flag = 0;
    Queue->front = (Queue->front + 1) % Queue->maxSize;
    printf("出队元素:%d\n", Queue->data[Queue->front]);
  return Queue->data[Queue->front];
}
int main()
{
    int MaxSize = 5;
    Queue Q;
    BuildQueue(&Q, MaxSize);
    EnQueue(&Q, 1);
    EnQueue(&Q, 2);
    EnQueue(&Q, 3);
    EnQueue(&Q, 4);
    EnQueue(&Q, 5);
  EnQueue(&Q, 6);
    DeQueue(&Q);
    DeQueue(&Q);
    DeQueue(&Q);
    DeQueue(&Q);
  EnQueue(&Q, 7);
  EnQueue(&Q, 8);
  EnQueue(&Q, 9);
  EnQueue(&Q, 10);
    DeQueue(&Q);
    return 0;
}
最大大小,maxsize
范围(front,front -1)

image