AcWing 3591. 堆栈的使用
原题链接
简单
作者:
NCpaste
,
2023-03-26 17:23:20
,
所有人可见
,
阅读 213
#include <stdio.h>
int n;
int a[10070];
int main ()
{
while (~scanf ("%d", &n))
{
if (n == 0)
{
break;
}
int ind = 0;
for (int j = 0; j < n; j ++)
{
// char c;
// cin >> c;
char c;
scanf ("%s", &c);
// printf ("n = %d, j = %d , ind = %d, op = %c\n",n, j, ind, c);
if (c == 'P')
{
int t;
scanf ("%d", &t);
a[ind++] = t;
}
else if (c == 'O')
{
if (ind != 0)
{
ind --;
}
}
else if (c == 'A')
{
if (ind == 0)
{
printf ("E\n");
continue;
}
printf ("%d\n", a[ind-1]);
}
}
n = 0;
printf ("\n");
}
return 0;
}
这道题多少有点恶心,注意一下,所有的操作用的是同一个堆栈,也就是,每组输入都不需要重新初始化堆栈
然后就是输入,char的输入用%s代替%c,可以避免一些奇奇怪怪的缓冲问题