データ構造--スタックの基本操作
2296 ワード
データ構造実験のスタック8:スタックの基本的な操作
Time Limit: 1000 MSメモリLimit: 65536 KB
Problem Description
スタックは基本的なデータ構造である.スタックは2つの基本的な操作方法、pushとpopを有する.pushの値はスタックの一番上に押し込まれますが、popはスタックの一番上の値をイジェクトします.今からスタックの使用を確認します.
Input
まず整数t(1<=t<=10)を入力して、テストのグループ数を表して、後でtグループの入力です. 各グループのテストデータに対して、1行目は2つの正の整数を入力します. m(1<=m<=100)、n(1<=n<=1000)では、mは現在のスタックの最大長さを表し、nは本グループのテストの下に入力する操作数を表します. その後の n 行ごとに、最初の文字は「P」または「O」または「A」かもしれません.もし「P」であれば、後に続く整数は、このデータをスタックに押し込むことを表します.「O」であれば、スタックの一番上の要素がスタックから出ることを表します.「A」であれば、現在のスタックの一番上に問い合わせる値を表します.
Output
各テストデータのセットについては、スタックをコマンド文字に従って処理し、(1)すべての「P」に対して動作し、スタックが出力されたら、「F」が完了します.(2)すべての「A」に対して動作し、スタックが空であれば、「E」を出力します.そうでなければ、スタックの一番上の値を出力します.(3)すべての「O」に対して動作し、スタックが空の場合は「E」を出力し、そうでない場合はスタックの一番上の要素の値を出力し、スタックを出させます.各出力は1ラインを占めて、テストデータのセット(最後のセットを除く)が完成したら、空白の行を出力します.
Example Input
推奨:文字を串で(%s)読み込む.
Author
Think:
本当に気持ちが悪いです.タイムアウトしました.探してみましたが、間違いを見つけられませんでした.
やっと分かりました.「アドバイス」を見てください.
文字を文字列で読み込みます.
私は決して複雑な方法で書いていません.分かりますように.
コードの実装:
Time Limit: 1000 MSメモリLimit: 65536 KB
Problem Description
スタックは基本的なデータ構造である.スタックは2つの基本的な操作方法、pushとpopを有する.pushの値はスタックの一番上に押し込まれますが、popはスタックの一番上の値をイジェクトします.今からスタックの使用を確認します.
Input
まず整数t(1<=t<=10)を入力して、テストのグループ数を表して、後でtグループの入力です. 各グループのテストデータに対して、1行目は2つの正の整数を入力します. m(1<=m<=100)、n(1<=n<=1000)では、mは現在のスタックの最大長さを表し、nは本グループのテストの下に入力する操作数を表します. その後の n 行ごとに、最初の文字は「P」または「O」または「A」かもしれません.もし「P」であれば、後に続く整数は、このデータをスタックに押し込むことを表します.「O」であれば、スタックの一番上の要素がスタックから出ることを表します.「A」であれば、現在のスタックの一番上に問い合わせる値を表します.
Output
各テストデータのセットについては、スタックをコマンド文字に従って処理し、(1)すべての「P」に対して動作し、スタックが出力されたら、「F」が完了します.(2)すべての「A」に対して動作し、スタックが空であれば、「E」を出力します.そうでなければ、スタックの一番上の値を出力します.(3)すべての「O」に対して動作し、スタックが空の場合は「E」を出力し、そうでない場合はスタックの一番上の要素の値を出力し、スタックを出させます.各出力は1ラインを占めて、テストデータのセット(最後のセットを除く)が完成したら、空白の行を出力します.
Example Input
25 10AP 9AP 6P 3P 10P 8AP 2O2 5P 1P 3OP 5A
Example OutputE98F835
ベント推奨:文字を串で(%s)読み込む.
Author
Think:
本当に気持ちが悪いです.タイムアウトしました.探してみましたが、間違いを見つけられませんでした.
やっと分かりました.「アドバイス」を見てください.
文字を文字列で読み込みます.
私は決して複雑な方法で書いていません.分かりますように.
コードの実装:
#include
#include
#include
int main()
{
int t, n, m, b, top;
char a[15];
int stack[108];
scanf("%d", &t);
while(t--)
{
top = -1;
scanf("%d %d", &m, &n);
while(n--)
{
scanf("%s", a);
if(a[0]=='P')
{
scanf("%d", &b);
int p = top;
p++;
if(p>=m)
printf("F
");
else
stack[++top] = b;
}
if(a[0]=='O')
{
if(top<0)
printf("E
");
else
{
printf("%d
", stack[top]);
top--;
}
}
if(a[0]=='A')
{
if(top<0)
printf("E
");
else
printf("%d
", stack[top]);
}
}
if(t>0)
printf("
");
}
return 0;
}