#include"iostream"
using namespace std;
const int MAXN = 5; //队列中最大能够存储的元素个数
int Queue[MAXN]; //队列
int Front,Rail; //队首,队尾
int push(int e){ //插入队首
Queue[Rail] = e;
Rail = (Rail+1)%MAXN;
}
int pop(){ //出队
int e = Queue[Front];
Queue[Front] = -1;
Front = (Front+1)%MAXN;
return e;
}
int empty(){ //判断队列是否为空
return Rail==Front;
}
int full(){ //判断是否满队
return (Rail+1)%MAXN == Front;
}
int length(){ //返回队列中的元素个数
/*
if(Rail>Front) return Rail-Front;
else return MAXN - (Front-Rail); //Rail-Front + MAXN;
*/
return (Rail-Front+MAXN)%MAXN;
}
int main(){
Front = Rail = 0;
int n;
for(int i=0;i<MAXN;i++) Queue[i] = -1;
cout<<"命令:\n1:push\n2:pop\n3:empty\n4:full\n5:length\n"<<endl;
cout<<"输入命令:";
while(cin>>n){
switch(n){
case 1:
if(full()){
cout<<"满了,无法继续push"<<endl;
cout<<"Front:"<<Front<<endl;
cout<<"Rail:"<<Rail<<endl;
for(int i=0;i<MAXN;i++) cout<<Queue[i]<<" ";cout<<endl;
}
else{
int e;
cout<<"输入要push的数:";
cin>>e;
push(e);
cout<<"Front:"<<Front<<endl;
cout<<"Rail:"<<Rail<<endl;
for(int i=0;i<MAXN;i++) cout<<Queue[i]<<" ";cout<<endl;
}
break;
case 2:
if(empty()){
cout<<"空了,无法继续pop"<<endl;
cout<<"Front:"<<Front<<endl;
cout<<"Rail:"<<Rail<<endl;
for(int i=0;i<MAXN;i++) cout<<Queue[i]<<" ";cout<<endl;
}
else{
int e;
e=pop();
cout<<"出队元素:"<<e<<endl;
cout<<"Front:"<<Front<<endl;
cout<<"Rail:"<<Rail<<endl;
for(int i=0;i<MAXN;i++) cout<<Queue[i]<<" ";cout<<endl;
}
break;
case 3:
if(empty()) cout<<"的确是空的"<<endl;
else cout<<"不是空的"<<endl;
break;
case 4:
if(full()) cout<<"的确是满的"<<endl;
else cout<<"不是满的"<<endl;
break;
case 5:
cout<<"队列中元素个数:"<<length()<<endl;
break;
default:
cout<<"没有这个命令"<<endl;
break;
}
cout<<"\n命令:\n1:push\n2:pop\n3:empty\n4:full\n5:length\n"<<endl;
cout<<"输入命令:"<<endl;
}
return 0;
}
循环队列
最新推荐文章于 2018-06-14 00:30:54 发布