编辑代码

#include <stdio.h>
#define max 5 //表示顺序表申请空间大小
int enQueue (int *a,int front,int rear,int data)
{
    //添加判断语句,如果rear超过max,则直接将其从a[0]重新存储,如果rear+1 
    //和front重合,则表示数组已满
    if((rear + 1)%max ==front)
    {
        printf("空间已满");
        return rear;
    }
    a[rear%max] = data;
    rear++;
    return rear;
}
int deQueue(int *a,int front,int rear)
{
    //如果front==rear,表示队列为空
    if(front ==rear%max)
    {
        printf("队列为空");
        return front;
    }
    printf("%d  ",a[front]);
    //front 不再直接 + 1,而是+1 后同max比较,如果=max,则直接跳转到a[0]
    front =(front +1)%max;
    return front;
}

int main()
{
    int a[max];
    int front,rear;
    //设置头指针和队尾指针,当队列中没有元素时,队头和队尾指向同一块地址
    front= rear = 0;
    //入列
    for(int i = 1;i<5;i++)
    {
        rear = enQueue(a,front,rear,i);
    }

    //出列
    front = deQueue(a,front,rear);

    //再入队
    rear=enQueue(a,front,rear, 5);
    //再出队
    front=deQueue(a, front, rear);
    rear = enQueue(a,front,rear,6);
    front = deQueue(a,front,rear);
    front = deQueue(a,front,rear);
    front = deQueue(a,front,rear);
    front = deQueue(a,front,rear);
    front = deQueue(a,front,rear);
}