核心:rear==front判断队空
(rear+1)%MAX==front判断队满
//数组循环队列
#define MAX 5
#include<iostream>
using namespace std;
int queue[MAX]={0};
int front=0;
int rear=0;
void addqueue(int value)
{
if(front==0&&(rear+1)%MAX==MAX)
cout<<"Full!"<<endl;
else if((rear+1)%MAX==front)
cout<<"Full!"<<endl;
else
{
queue[rear]=value;
rear=(rear+1)%MAX;
}
}
int delqueue()
{
int temp;
if(front==rear)
cout<<"empty"<<endl;
else
{
temp=queue[front];
queue[front]=-1;
front=(front+1)%MAX;
return temp;
}
}
void display()
{
int i=0;
for(;i<MAX;i++)
cout<<queue[i]<<"\t";
cout<<endl;
}
void init()//初始化队列,设定空值为-1*/
{
for(int i = 0 ;i < MAX; ++ i)
queue[i] = -1;
}
int main(void)
{
int select,temp;
init();
while(1)
{
cout<<"1.Input a data\n";
cout<<"2.Output a data\n";
cout<<"3.Display the queue\n";
cout<<"4.Exit\n";
cin>>select;
switch(select)
{
case 1:cout<<"Please input a value";
cin>>temp;
addqueue(temp);
break;
case 2:delqueue();
break;
case 3:display();
break;
case 4:return 0;
}
system("cls");
display();
}
return 0;
}