题目描述
栈:插入元素和删除元素只能在线性表的一端进行,所以遵循“先进后出 (LIFO) ”原则,其中插入和删除的一端称为栈顶 (top)。我们可以把栈比喻成一个箱子,只能在箱子的开口处放入和取出物体,而且是后放入的物体,会被先取出来。
输入格式
第 1 行一个整数 n,表示有 条关于n 的操作s,在进行任何操作之前, s是空的。接来的 n 行,每行 一个关于s 的操作,格式和含义如下:
clear:把栈置空。
empty:判断栈是否为空。
push(x):把整数 x 插入栈顶。
pop: 栈顶元素出栈。
top :获取栈顶元素的值。
输出格式
若干行,对应输入中的 top, pop 和 empty 操作:
对于 top 操作,输出一个整数,如果这个操作失败,则输出单词 error。
对于 pop 操作,如果这个操作失败,则输出单词 error。
对于 empty 操作,如果栈是空,则输出 empty,否则输出 not empty。
样例
样例输入
复制8
push 10
top
push 15
pop
top
clear
pop
empty
样例输出
复制10
10
error
empty
_____________________________________________________________________________
日常发作业题解。
写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
int n,idx=0,y;
string x;
int stk[100005];
void push(int x){
stk[idx++]=x;
}
int top(){
return stk[idx-1];
}
void pop(){
idx--;
}
bool empty(){
return idx==0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>x;
if(x[0]=='p'&&x[1]=='u'){
cin>>y;
push(y);
}else if(x[0]=='p'){
if(idx==0)cout<<"error\n";
else pop();
}else if(x[0]=='t'){
if(idx==0)cout<<"error\n";
else cout<<top()<<endl;
}else if(x[0]=='e'){
if(idx==0)cout<<"empty\n";
else cout<<"not empty\n";
}else if(x[0]=='c'){
idx=0;
}
}
}