手动封装一个循环顺序队列类(Stack)
私有成员属性:存放队列的数组、两个变量分别记录队头和队尾下标公有成员函数:入队(push( type value ))
出队(pop())
展示(show)
求队列长度(size())︰要求时间复杂度在常量级别判满( bool full())
判空(bool empty())
#include <iostream>
#define MAXSIZE 8
using namespace std;
class queue
{
private:
int s[MAXSIZE];
int rear = 0;
int front = 0;
public:
bool full()
{
return front == (rear+1)%MAXSIZE;
}
bool empty()
{
return front == rear;
}
void push(int m)
{
if(full())
{
cout<<"入队失败"<<endl;
return;
}
s[rear] = m;
rear = (rear+1)%MAXSIZE;
}
int pop()
{
if(empty())
{
cout<<"出队失败"<<endl;
return -1;
}
int a = s[front];
cout<<"出队列的元素是:"<<a<<endl;
front = (front+1)%MAXSIZE;
return 0;
}
int size()
{
return (MAXSIZE-front+rear)%MAXSIZE;
}
void show()
{
if(empty())
{
cout<<"遍历失败"<<endl;
return;
}
for(int i=front;i!=rear;i=(i+1)%MAXSIZE)
{
cout<<s[i]<<" ";
}
cout<<endl;
}
};
int main()
{
queue l;
int num = 0;
int m = 0;
while(1)
{
cout<<"1.入队"<<endl;
cout<<"2.出队"<<endl;
cout<<"3.遍历队列"<<endl;
cin>>num;
switch (num)
{
case 1:
{
cout<<"输入元素:";
cin>>m;
l.push(m);
}
break;
case 2:
{
l.pop();
}
break;
case 3:
{
l.show();
cout<<l.size()<<endl;
}
break;
default:cout<<"请重新输入操作数"<<endl;
}
}
return 0;
}