PTA 队列操作

203 阅读1分钟

请实现一个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;
}

提交结果:

5.png