//顺序存储队列
#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
",e);
DeQueue(&Q,&e);
printf("出队的数据为:%d
",e);
GetHead(Q,&e);
printf("当前队头的数据为:%d
",e);
return 0;
}
//初始化队列
void InitQueue(SqQueue *q){
q->front = q->rear = 0;
}
//判断队列是否为空
void QueueEmpty(SqQueue q){
if(q.front == q.rear){
printf("队列为空!
");
}else{
printf("队列不为空!
");
}
}
///判断队列是否为满
void QueueFull(SqQueue q){
if((q.rear+1) % MaxSize == q.front){
printf("队列已满!
");
}else{
printf("队列未满!
");
}
}
//入队
void EnQueue(SqQueue *q , int e){
if((q->rear+1) % MaxSize == q->front){
printf("队列已满!
");
}else{
q->data[q->rear] = e;
printf("%d入队
",e);
q->rear = (q->rear+1) % MaxSize;
}
}
//出队
int * DeQueue(SqQueue *q , int *e){
if(q->rear == q->front){
printf("队列为空!
");
}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("队列为空!
");
}else{
(*e) = q.data[q.front];
}
return e;
}