#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 50
typedef struct
{
int element[MAXSIZE];
int front; //队头指示器
int rear; //队尾指示器
} SeqQueue;
void InitQueue(SeqQueue *Q);//初始化操作,将Q初始化为一个空的循环队列
bool EnterQueue(SeqQueue *Q,int x);//入队,将元素x入队
bool DeleteQueue(SeqQueue *Q,int *x);//出队,删除队列的队头元素,用x返回其值
int main(void)
{
SeqQueue S;
SeqQueue *s=&S;
int x;
int *a=&x;
InitQueue(s);
for(int i=1; i<=10; i++)
EnterQueue(s,i);
for(int i=1; i<=10; i++)
{
DeleteQueue(s,a);
printf("%d ",x);
}
printf("\n");
return 0;
}
void InitQueue(SeqQueue *Q)//初始化操作,将Q初始化为一个空的循环队列
{
Q->front=Q->rear=0;
}
bool EnterQueue(SeqQueue *Q,int x)//入队,将元素x入队
{
if((Q->rear+1)%MAXSIZE==Q->front)//尾指针加一追上头指针,队列已满
return false;
Q->element[Q->rear]=x;
Q->rear=(Q->rear+1)%MAXSIZE;
return true;
}
bool DeleteQueue(SeqQueue *Q,int *x)//出队,删除队列的队头元素,用x返回其值
{
if(Q->front==Q->rear)//队列为空
return false;
*x=Q->element[Q->front];
Q->front=(Q->front+1)%MAXSIZE;//重新设置队头指针
return true;//操作成功
}