题目描述
数组模拟栈的加入、弹出、查询栈顶、判断为空
想象一端封住,一端开口的数组,从index == 0开始
模板
// tt表示栈顶
int stk[N], tt = 0;
// 向栈顶插入一个数
stk[ ++ tt] = x;
// 从栈顶弹出一个数
tt -- ;
// 栈顶的值
stk[tt];
// 判断栈是否为空
if (tt > 0)
{
}
C++ 代码
#include <iostream>
#include "string"
using namespace std;
const int N = 1e6 + 10;
int stk[N], index = -1; //index为栈顶指针, index >= 0, 空栈的index == -1
int main() {
int M = 0;
cin >> M;
for (int i = 0; i < M; i++) {
string cmd;
cin >> cmd;
if (cmd == "push") { // 插入:插入前先index++
int x;
cin >> x;
stk[++index] = x;
}
else if (cmd == "pop") { // 弹出:直接index--
index--;
}
else if (cmd == "empty") { // index是由0开始,所以index >= 0
if (index >= 0) {
cout << "NO" << endl;
}
else {
cout << "YES" << endl;
}
}
else if (cmd == "query") {
if (index >= 0) {
cout << stk[index] << endl;
}
else {
cout << "empty stack" << endl;
exit(0);
}
}
else {
exit(1);
}
}
}