AB1 【模板】栈
牛客:
问题描述:
描述
请你实现一个栈。
操作:
push x:将 加x x 入栈,保证 x x 为 int 型整数。
pop:输出栈顶,并让栈顶出栈
top:输出栈顶,栈顶不出栈
输入描述:
第一行为一个正整数 n n ,代表操作次数。(1≤n≤100000)(1≤n≤100000)
接下来的 n n ,每行为一个字符串,代表一个操作。保证操作是题目描述中三种中的一种。
输出描述:
如果操作为push,则不输出任何东西。
如果为另外两种,若栈为空,则输出 "error“
否则按对应操作输出。
AC代码
栈stack,后进先出。
不使用vector,使用数组模拟stack。还是很好过的,不涉及其他stack操作。
#include <cstdio>
#include <iostream>
using namespace std;
#define N 100010
int main() {
int n;
cin>>n;
int num[N];
int hh=0;
int tt=-1;
while (n--) {
string op;
int x;
cin>>op;
if(op == "push")
{
cin>>x;
num[++tt] = x;
// printf("%lld\n",num[tt]);
}
else if(op == "top")
{
if(tt-hh < 0)
{
printf("error\n");
}
else
printf("%lld\n",num[tt]);
}
else if(op == "pop")
{
if(tt-hh < 0)
{
printf("error\n");
}
else{
printf("%lld\n",num[tt]);
tt--;
}
}
}
return 0;
}
// 64 位输出请用 printf("%lld")