C++中stack的使用

使用stack,先导入头文件:#include<stack>

若定义一个栈的语句:stack<int> stackOne,则:

入栈操作:int number = 3; stackOne.push(number);

出栈操作:stackOne.pop();

获取栈顶元素:stackOne.top();

判断栈是否为空:stackOne.empty();   //为空返回真

获取栈顶元素个数:stackOne.size();


判断栈顶元素时要顺便判断栈是否为空

出栈多要判断栈是否为空


C++,`stack`是标准模板库(STL)的一个容器,它基于LIFO(后进先出)的原则,即最后一个进入的元素会最先被弹出。`stack`可以用来实现一些基于栈的算法,如括号匹配、逆波兰表达式求值等。 `stack`容器提供了以下几个常用的成员函数和操作: - `push()`:将元素压入栈顶。 - `pop()`:弹出栈顶元素。 - `top()`:返回栈顶元素。 - `empty()`:判断栈是否为空。 - `size()`:返回栈元素的个数。 以下是一个使用`stack`容器的简单示例,用于计算逆波兰表达式的值: ```c++ #include <iostream> #include <stack> #include <string> using namespace std; int evalRPN(vector<string>& tokens) { stack<int> s; int num1, num2; for (string token : tokens) { if (token == "+") { num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num2 + num1); } else if (token == "-") { num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num2 - num1); } else if (token == "*") { num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num2 * num1); } else if (token == "/") { num1 = s.top(); s.pop(); num2 = s.top(); s.pop(); s.push(num2 / num1); } else { s.push(stoi(token)); } } return s.top(); } int main() { vector<string> tokens = {"2", "1", "+", "3", "*"}; int result = evalRPN(tokens); cout << "The result is: " << result << endl; return 0; } ``` 输出结果为: ``` The result is: 9 ``` 这里使用了`stack`容器来存储逆波兰表达式的数字和运算符,当遇到数字时,将其转换为整数并压入栈;当遇到运算符时,弹出栈顶的两个元素进行计算,将结果压入栈。最后栈只剩下一个元素,即为逆波兰表达式的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值