トピック
最初は空のキューと一連のエンキューおよびデキュー操作を想定して、毎回デキューされる要素を出力するプログラムを作成してください。キューの要素値はすべて整数です。
入力フォーマット
入力の最初の行には、操作の数を示す正の整数 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 はキューから取り出すことを意味します) に従って、対応する操作を実行し、キューから取り出されるたびに要素または「無効」を出力します。
-
操作の合計数を表す正の整数 n を読み取り、整数キュー (キュー q) を作成してキューをシミュレートします。
-
ループを使用して各操作を繰り返し処理します。各反復で、整数フラグが読み取られ、操作のタイプが決定されます。
-
flag == 1 の場合、エンキュー操作が実行されることを意味し、このとき、整数の tmp を読み取ってエンキューします。
-
flag == 0 の場合、デキュー操作が実行されることを示します。まずキューが空かどうかを確認し、空の場合はデキューできないことを示す「invalid」が出力されます。キューが空でない場合は、キューの先頭の要素を出力し、その要素をキューからポップします。
-
ループが完了すると、出力結果は毎回デキューされる要素または「無効」となり、各出力結果は 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;
}