清华大学算法训练营 —— 栈程序

栈程序

时间限制:2s,空间256MB

问题描述

实现一个栈,完成以下功能:

  1. 入栈
  2. 出栈
  3. 查询栈中位置Y是谁

一开始栈为空,栈中的位置从1开始(即栈底位置为1)。

输入

第一行一个整数n,表示操作个数(1 <= n <= 100000)

接下来n行,每行第一个数字表示操作(见描述):

  • 若为数字1,则接下来有一串字符串X,表示将X压入栈中。
  • 若为数字2,表示弹出栈顶(保证栈非空),并输出出栈的这个人。
  • 若为数字3,则接下来有一个整数Y,表示询问栈中位置Y是谁(保证位置Y合法),并输出名字。

数据中的字符串只包含26个小写字母(无空格灯分隔符),且长度不超过15

字符串可能有重复,正如现实中可能有重名。

输出

将所有操作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
测试样例
4
1 sdfasdasgeqsadg
2
1 sdf
3 1
测试样例
sdfasdasgeqsadg
sdf
提示

C++或JAVA所提供的Stack类并未直接提供栈中元素的索引,所以可能需要你自己写一个栈。

#include <bits/stdc++.h>
#define N 100000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值