题目要求:
我的代码实现:(顺序队列)
#include<stdio.h>
#include<stdlib.h>
//队列基本数据类型定义
#define ElemType int
#define MaxSize 15
typedef struct{
ElemType data[MaxSize];
int rear,front,tag;
}SqQueue;
void InitQueue(SqQueue &Q)
{
Q.front=Q.rear=0;
Q.tag=0;
}
//入队操作:
bool EnQueue(SqQueue &Q,ElemType x)
{
if(Q.front==Q.rear&&Q.tag==1)return false;
Q.data[Q.rear]=x;
Q.rear=(Q.rear+1)%MaxSize;
Q.tag=1;
return true;
}
//出队操作:
bool DeQueue(SqQueue &Q,ElemType &x)
{
if(Q.front==Q.rear&&Q.tag==0)return false;
x=Q.data[Q.front];
Q.front=(Q.front+1)%MaxSize;
Q.tag=0;
return true;
}
int main()
{
ElemType x;
SqQueue Q; //定义队列Q
InitQueue(Q); //初始化队列
printf("\n开始入队:\n");
scanf("%d",&x);
while(x!=9999)
{
if(!EnQueue(Q,x))
{
printf("\n队列已满,入队结束\n");
break;
}
scanf("%d",&x);
}
printf("\n开始出队:\n");
while(DeQueue(Q,x))printf("%d ",x);
printf("\n");
return 0;
}