//顺序存储队列 
#include <stdio.h>

#define MaxSize 6

typedef struct{
    int data[MaxSize];
    int front,rear;
}SqQueue;

void InitQueue(SqQueue *);      //初始化队列 
void QueueEmpty(SqQueue);       //判断队列是否为空
void QueueFull(SqQueue);        //判断队列是否为满 
void EnQueue(SqQueue * , int);  //入队 
int * DeQueue(SqQueue * , int *);   //出队 
int * GetHead(SqQueue , int *);     //获取队头数据 

int main(void){
    SqQueue Q;
    InitQueue(&Q);
    EnQueue(&Q,1);
    EnQueue(&Q,2);
    EnQueue(&Q,3);
    EnQueue(&Q,4);
    EnQueue(&Q,5);
    EnQueue(&Q,6);
    
    int e = 0;
    DeQueue(&Q,&e);
    printf("出队的数据为:%d\n",e);
    DeQueue(&Q,&e);
    printf("出队的数据为:%d\n",e);
    
    GetHead(Q,&e);
    printf("当前队头的数据为:%d\n",e);
    return 0;
}

//初始化队列 
void InitQueue(SqQueue *q){
    q->front = q->rear = 0;
}

//判断队列是否为空 
void QueueEmpty(SqQueue q){
    if(q.front == q.rear){
        printf("队列为空!\n");
    }else{
        printf("队列不为空!\n");
    } 
}

///判断队列是否为满
void QueueFull(SqQueue q){
    if((q.rear+1) % MaxSize == q.front){
        printf("队列已满!\n");
    }else{
        printf("队列未满!\n");
    }
} 

//入队
void EnQueue(SqQueue *q , int e){
    if((q->rear+1) % MaxSize == q->front){
        printf("队列已满!\n");
    }else{
        q->data[q->rear] = e;
        printf("%d入队\n",e);
        q->rear = (q->rear+1) % MaxSize;
    }
}

//出队
int * DeQueue(SqQueue *q , int *e){
    if(q->rear == q->front){
        printf("队列为空!\n");
    }else{
        (*e) = q->data[q->front];
        q->front = (q->front + 1) % MaxSize; 
    }
    return e;
}

//获取队头数据
int * GetHead(SqQueue q , int *e){
    if(q.front == q.rear){
        printf("队列为空!\n");
    }else{
        (*e) = q.data[q.front]; 
    }
    return e;
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄