AcWing 828. 模拟栈

发布时间 2023-12-04 11:26:58作者: 爬行的蒟蒻

题面:实现一个栈,栈初始为空,支持四种操作:

  1. push x – 向栈顶插入一个数 \(x\)
  2. pop – 从栈顶弹出一个数;
  3. empty – 判断栈是否为空;
  4. query – 查询栈顶元素。

现在要对栈进行 \(M\) 个操作,其中的每个操作 \(3\) 和操作 \(4\) 都要输出相应的结果。

原题链接:828. 模拟栈 - AcWing

//利用单栈顶指针top即可
#include<bits/stdc++.h>
using namespace std;

const int N = 100005;
int st[N], top = -1;

void push(int x) {
	st[++top] = x;
}

void pop() {
	top--;
}

bool empty() {
	return top == -1;
}

int query() {
	return st[top];
}

int main()
{
	int m;
	cin >> m;
	while (m--) {
		int x;
		string op;
		cin >> op;
		if (op == "push") {
			cin >> x;
			push(x);
		}
		else if (op == "pop")
			pop();
		else if (op == "query")
			cout << query() << endl;
		else
			empty() ? cout << "YES\n" : cout << "NO\n";
	}
}