PTA: キューの実装と基本操作

トピック

最初は空のキューと一連のエンキューおよびデキュー操作を想定して、毎回デキューされる要素を出力するプログラムを作成してください。キューの要素値はすべて整数です。

入力フォーマット

入力の最初の行には、操作の数を示す正の整数 n が含まれます。次の n 行は、各行が操作を表し、形式は 1 d または 0 です。1 d は整数 d をキューに追加することを意味し、0 は整数 d をキューに追加することを意味します。デキューすることを意味します。 n は 20,000 を超えません。

出力フォーマット

デキューされた各要素を順番に、要素ごとに 1 行で出力します。デキュー操作が不正な場合 (キューが空の場合のデキューなど)、操作に対して無効が出力されます。

入力サンプル

7
1 1
1 2
0
0 0 1 3
0

出力サンプル

1
2
無効
3

アイデア

入力操作のタイプ (1 はキューに入る、0 はキューから取り出すことを意味します) に従って、対応する操作を実行し、キューから取り出されるたびに要素または「無効」を出力します。

  1. 操作の合計数を表す正の整数 n を読み取り、整数キュー (キュー q) を作成してキューをシミュレートします。

  2. ループを使用して各操作を繰り返し処理します。各反復で、整数フラグが読み取られ、操作のタイプが決定されます。

  3. flag == 1 の場合、エンキュー操作が実行されることを意味し、このとき、整数の tmp を読み取ってエンキューします。

  4. flag == 0 の場合、デキュー操作が実行されることを示します。まずキューが空かどうかを確認し、空の場合はデキューできないことを示す「invalid」が出力されます。キューが空でない場合は、キューの先頭の要素を出力し、その要素をキューからポップします。

  5. ループが完了すると、出力結果は毎回デキューされる要素または「無効」となり、各出力結果は 1 行になります。

注意点:

デキュー操作の前に、コードは不正なデキュー操作を回避するためにキューが空かどうかをチェックします。

このコードは、無効なデキュー操作の後に出力をスキップし、次のループを続行するために continue を使用します。

コード

#include<iostream>
#include<queue>
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;
}

おすすめ

転載: blog.csdn.net/m0_74195626/article/details/133849879