前言
你好啊,我最近在学acwing的算法基础课,备战蓝桥杯,如果你也是一样的话,欢迎一起学习~
一、题目&解读
1、题目
2、题目解读 &知识点
本题考察栈的知识:后进者先出,先进者后出,这就是典型的“栈”结构。
压栈:给栈中底部存放数据
出栈:从栈顶部删除
二、思路
1、定义
定义stk[N]
栈 top
为栈顶 因为栈是一种先进后出的结构。
2、实现初始化
top=-1
对栈进行初始化,表示空
3、实现压栈和出栈
压栈 需要++top
然后读入即可 stk[++top]=x
出栈 只需 --top
4、判断栈是否为空
只要top>0
栈就不为空
栈顶stk[top]
5、算法模板
// tt表示栈顶
int stk[N], tt = 0;
// 向栈顶插入一个数
stk[ ++ tt] = x;
// 从栈顶弹出一个数
tt -- ;
// 栈顶的值
stk[tt];
// 判断栈是否为空
if (tt > 0)
{
}
三、AC代码
#include <iostream>
using namespace std;
const int N = 100010;
int m;
int stk[N],top;
int main () {
cin >> m;
while (m --) {
string op;
int x;
cin >> op;
if (op =="push") {
cin >> x;
stk[++top] = x;
}
else if (op == "pop") {
--top;
}
else if (op == "empty") {
cout << (top ? "NO" : "YES") << endl;
//如果top>0 则输出no 否则输出yes
}
else {
cout << stk[top] << endl;
}
}
return 0;
}
四、总结
学数据结构 最主要的还是要画图,先画一遍,代码自然就能够写了。
结尾:
感谢你能看完,希望对你有帮助 ,如有错误欢迎指正,码字不易,给个赞呗