PTA: 队列的实现及基本操作

队列的实现及基本操作

  • 题目
    • 输入格式
    • 输出格式
    • 输入样例
    • 输出样例
  • 思路
  • 代码

题目

给定一个初始为空的队列和一系列入队、出队操作,请编写程序输出每次出队的元素。队列的元素值均为整数。

输入格式

输入第1行为1个正整数n,表示操作个数;接下来n行,每行表示一个操作,格式为1 d或0。1 d表示将整数d入队,0表示出队。n不超过20000。

输出格式

按顺序输出每次出队的元素,每个元素一行。若某出队操作不合法(如在队列空时出队),则对该操作输出invalid。

输入样例

7
1 1
1 2
0
0
0
1 3
0

输出样例

1
2
invalid
3

思路

根据输入的操作类型(1表示入队,0表示出队),进行相应的操作,并输出每次出队的元素或"invalid"

  1. 读取正整数 n,表示操作的总数;创建一个 的整数队列(queue q)来模拟队列。

  2. 用循环迭代处理每个操作。在每次迭代中,读取一个整数 flag 来确定操作类型。

  3. 如果 flag == 1,表示要执行入队操作,此时它会读取一个整数 tmp,并将其入队

  4. 如果 flag == 0,表示要执行出队操作。首先检查队列是否为空,如果为空,则输出"invalid",表示无法出队。如果队列不为空,它输出队列的front元素,然后从队列中pop该元素

  5. 循环完成后,输出的结果就是每次出队的元素或"invalid",每个输出结果都会在一行上

注意的点:

在出队操作之前,代码检查队列是否为空,以避免出现非法的出队操作。

代码中使用了 continue 来跳过无效的出队操作后的输出,来继续下一次循环

代码

#include
#include
using namespace std;
int main()
{
    int n;
    cin>>n;
    queue<int> q;
    int flag;
    for(int i =0 ;i<n;i++)
    {
        cin>>flag;
        if(flag == 1)
        {
            int tmp = 0;
            cin>>tmp;
            q.push(tmp);
        }
        else if(flag == 0)
        {
            if(q.empty())
            {
                cout<<"invalid"<<endl;
                continue;
            }
            cout<<q.front()<<endl;
            q.pop();
        }
    }
    return 0;
}

你可能感兴趣的:(PTA,数据结构,算法,c++,数据结构,队列)