栈及模板
1.栈的定义

栈可以理解为是操作受限的线性表。栈满足后进先出或先进后出的特性。
在这里,我们采用数组来模拟栈。
2.数组模拟栈
我们可以用数组stk来模拟栈本身,tt代表栈顶的下标。
栈具有如下操作:(注意:不同人实现栈的方法是不同的,但是思想都是相同的。我们用本文中的方法来实现栈)
1. 往栈中插入一个元素
stk[++tt] = x;
2. 往栈中弹出一个元素
tt
3. 判断栈是否为空
if (tt > 0) not empty
else empty
4. 栈顶
stk[tt];
5. 栈的初始化
tt = 0;
3. 栈模板
int stk[N], tt = 0;
stk[ ++ tt] = x;
tt -- ;
stk[tt];
if (tt > 0)
{
}
4.例题
https://www.acwing.com/problem/content/830/
#include <iostream>
#include <cstdio>
using namespace std;
int stk[100010];
int tt = 0;
void push(int x){
stk[++tt] = x;
}
void pop(){
tt--;
}
int query(){
return stk[tt];
}
void isEmpty(){
if(tt > 0){
printf("NO\n");
}else{
printf("YES\n");
}
}
int main(){
int m,x;
scanf("%d",&m);
string op;
while(m--){
cin >> op;
if(op == "push"){
scanf("%d",&x);
push(x);
}else if(op == "pop"){
pop();
}else if(op == "query"){
printf("%d\n",query());
}else{
isEmpty();
}
}
return 0;
}
作者:gao79138
链接:https://www.acwing.com/
来源:本博客中的截图、代码模板及题目地址均来自于Acwing。其余内容均为作者原创。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现