循环队列

    xiaoxiao2021-12-14  20

    #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; }
    转载请注明原文地址: https://ju.6miu.com/read-971622.html

    最新回复(0)