栈
描述
实现一个栈,完成以下功能:
- 入栈
- 出栈
- 询问栈中位置Y是谁
一开始栈为空。栈中的位置从1开始(即栈底位置为1)。
输入
第一行一个整数n,表示操作个数。
接下来n行,每行第一个数字表示操作(见描述):
- 若为数字1,则接下来有一串字符串X,表示将X压入栈中。
- 若为数字2,表示弹出栈顶(保证栈非空),并输出出栈的这个人。
- 若为数字3,则接下来有一个整数Y,表示询问栈中位置Y是谁(保证位置Y合法),并输出名字。
输出
将所有操作2和操作3输出,一行一个。
输入样例
11
1 a
1 b
1 c
3 1
3 2
3 3
2
1 d
3 1
3 2
3 3
输出样例
a
b
c
c
a
b
d
限制
对于30%的数据,1 ≤ n ≤ 2000;
对于另30%的数据,没有操作3;
对于100%的数据,1 ≤ n ≤ 100000。
数据中出现的字符串只包含26个小写字母(无空格等分隔符),且长度不超过15。
字符串有可能重复。正如现实中可能有重名一样。
时间:2 sec
空间:256 MB
提示
[入栈和出栈都是操作着栈顶。]
[开一个大小为n的数组,记录栈顶的位置,入栈出栈就是将这栈顶加一减一,栈中某个位置Y在数组相应的下标就是Y。]
另外,为了帮助大家完成题目,我们提供了只包含了输入输出功能的程序模板,也提供了含有算法的大部分实现细节的程序。
你可以根据自己的实际情况,在这些程序的基础上进行作答,或不参考这些程序,这将与你的得分无关。
这些程序可以从【这里】下载。