#include<stdio.h>
#include<stdlib.h>
#define MAXQSIZE 100
#define OK 2
#define ERROR 0
#define OVERFLOW -1
#define TRUE 1
#define FALSE 0
typedef int QElemType;
typedef int Status;
typedef struct{
QElemType *base;
int front;
int rear;
}SqQueue;
Status InitQueue(SqQueue&Q){ //构造一个空队列Q
Q.base=(QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
if(!Q.base)exit(OVERFLOW); //存储分配失败
Q.front=Q.rear=0;
return OK;
}
Status EnQueue(SqQueue&Q,QElemType e){ //插入元素e为Q的新队尾元素
if((Q.rear+1)%MAXQSIZE==Q.front)return ERROR; //队已满
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;
return OK;
}
Status DeQueue(SqQueue&Q) {
//若队列不空,则删除Q的队头元素,用e输出其值,并返回OK;
//否则返回ERROR
QElemType e;
if(Q.front==Q.rear)return ERROR;
else{
e=Q.base[Q.front];
printf("%d",e);
Q.front=(Q.front+1)%MAXQSIZE;
}
return OK;
}
int main(){ //主函数
SqQueue Q;
Status a[15];
InitQueue(Q);
printf("输入七个数依次进队:\n");
for(int i=0;i<7;i++)
{ //通过数组进队
scanf("%d",&a[i]);
EnQueue(Q,a[i]);
}
printf("无间隔出队:\n");
for(int i=0;i<7;i++)
DeQueue(Q);
return 0;
}