1、模拟栈
输入样例:
10
push 5
query
push 6
pop
query
pop
empty
push 4
query
empty
输出样例:
5
5
YES
4
NO
1.1 栈的图解
栈(封底):先进后出
队列(不封底):先进先出
1.2 定义
//栈 栈顶的下标
int stk[N],tt;
1.3 插入
//插入一个数x
stk[++tt]= x;
1.4 删除
//弹出(删除)
t--;
1.5 判断栈是否为空
if(tt>0)//不空
not empty;
else
empty;
1.6 取出栈顶元素
stk[tt];
1.7 AC代码
#include<iostream>
using namespace std;
const int N=100010;
//数组模拟栈、tt为栈顶元素的下标
int stk[N],tt;
void push(int x)//操作1:向栈顶插入一个数
{
tt++;//栈中元个数+1
stk[tt]=x;//放入栈中
}
void pop()//操作2:从栈顶弹出一个数
{
tt--;//栈中元素个数-1,栈顶元素自动被删除
}
void empty()//操作3:判断栈是否为空
{
if(tt)//中元素个数不为0,栈不空
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
}
int query()//操作4:查询栈顶元素
{
cout<<stk[tt]<<endl;//输出栈顶元素值
}
int main()
{
int n;
cin>>n;
while(n--)
{
string s;
cin>>s;
if(s=="push")//操作1
{
int x;
cin>>x;
push(x);//这里括号中有参数,为需要插入的元素
}
else if(s=="pop")//操作2
{
pop();
}
else if(s=="empty")//操作3
{
empty();
}
else if(s=="query")//操作4
{
query();
}
}
return 0;
}