AcWing 828. 模拟栈 链栈数组模拟
原题链接
简单
作者:
卷死你们QAQ
,
2023-03-17 11:21:54
,
所有人可见
,
阅读 26
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N = 100010;
int idx=1,head, e[N], ne[N];
//初始化
void init()
{
head = -1;
idx = 1;
}
//在头结点增加节点
void add_head(int x)
{
e[idx] = x, ne[idx] = head, head = idx ++ ;
}
//压栈
void push(int u)
{
add_head(u);
}
//弹栈
void pop()
{
head = ne[head];
}
//判断是否为空
bool empty()
{
if(head == -1) return true;
else return false;
}
//获取栈顶元素
int ftop()
{
return e[head];
}
int main()
{
init();
int n;
cin >> n;
while(n--)
{
string s;
cin >> s;
if(s == "push")
{
int a;
cin >> a;
push(a);
}
if(s == "pop")
{
pop();
}
if(s == "query")
{
cout << ftop() << endl;
}
if(s == "empty")
{
if(empty()) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
}