3.6 一维数组a[m]存储循环队列的元素,若要使这m个分量都得到应用,则另设一辅助标志变量flag判断队列为‘空’还是‘满’,试编写入队和出队算法
此题核心代码就函数部分
#include<iostream>
#include<queue>
#define MaxSize 3
using namespace std;
struct SeqQueue
{
int a[MaxSize];//存放队列元素的数组
int front,rear;//队头和队尾指针
};
int Judge(SeqQueue q,int m){
int flag=0;
if((q.rear+1)%m==q.front)
flag=1;//队满
if((q.front+1)%m==q.rear)
flag=0;//队空
return flag;
}
//注:元素入队,rear后移;元素出队,front后移
int main()
{
SeqQueue q;
q.front=q.rear=0;
for(int i=0;i<MaxSize-1;i++)
q.rear=(q.rear+1)%MaxSize;//入队
//q.front=(q.front+1)%MaxSize;//出队
int t=Judge(q,MaxSize);
if(t) cout<<"满";
else cout<<"空";
return 0;
}