栈的定义
栈是一个后进先出表(LIFO,last in first out)
可以想象成一个弹夹
可以用数组手动实现,但这里主要介绍用STL的实现方式
C++ STL stack的基本使用方法
#include <stack> //头文件
stack<int> mystack; //声明
mystack.push(x); //压栈
mystack.pop(); //弹栈
mystack.top(); //访问栈顶元素
mystack.size(); //访问栈元素个数
mystack.empty(); //判断栈是否为空
C++ STL stack的使用注意事项
1.pop函数没有返回值,只会弹栈
2.top和pop函数在栈为空时是非法的
3.栈不能随机访问元素
经典例题
1.程序员输入问题
题目描述
程序员输入程序出现差错时,可以采取以下的补救措施:
1.按错了一个键时,可以补按一个退格符“#”,以表示前一个字符无效;
2.发现当前一行有错,可以按一个退行符“@”,以表示“@”与前一个换行符之间的字符全部无效。
分析
1.退格:直接pop
2.退行:手动清空栈
代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, x;
string s;
stack<char> sk, ans;
signed