请实现一个MyQueue类,实现出队,入队,求队列长度.
实现入队函数 void push(int x); 实现出队函数 int pop(); 实现求队列长度函数 int size();
输入格式:
每个输入包含1个测试用例。每个测试用例第一行给出一个正整数 n (n <= 10^6) ,接下去n行每行一个数字,表示一种操作: 1 x : 表示从队尾插入x,0<=x<=2^31-1。 2 : 表示队首元素出队。 3 : 表示求队列长度。
输出格式:
对于操作2,若队列为空,则输出 “Invalid”,否则请输出队首元素。 对于操作3,请输出队列长度。 每个输出项最后换行。
输入样例:
5
3
2
1 100
3
2
结尾无空行
输出样例:
0
Invalid
1
100
代码:
#include<iostream>
using namespace std;
class MyQueue
{
private:
int F=0;//首元素下标
int L=0;//末元素下标
int ZU[100];//对队列元素用数组存储
public:
int size();
int pop();
void push(int x);
};
void MyQueue::push(int x)//1:入队函数
{
ZU[L++]=x;//将末元素下标后移,并存储末元素
}
int MyQueue::pop()//2:出队函数
{
return ZU[F++];//将首元素下标后移
}
int MyQueue::size()//3:求队列函数
{
return L-F;//首末下标相减求得
}
int main()
{
int n,i;
MyQueue queue;
cin>>n;//输入行数
for(i=0; i<n; i++)
{
int op;
cin>>op;//输入指令
if(op==1)
{
int x;
cin>>x;//输入添加元素
queue.push(x);
}
if(op==2)
{
if(queue.size()==0)
{
cout<<"Invalid"<<endl;
}
else
{
cout<<queue.pop()<<endl;
}
}
if(op==3)
{
cout<<queue.size()<<endl;
}
}
return 0;
}