用C++语言举例实现,将运算表达式压入栈中
时间: 2024-10-18 22:16:26 浏览: 21
浅谈C/C++ 语言中的表达式求值
在C++中,你可以使用STL(标准模板库)中的`std::stack`来存储运算表达式的操作符。下面是一个简单的例子,假设我们有一个运算表达式字符串,我们要逐个压入栈中直到遇到操作数:
```cpp
#include <iostream>
#include <stack>
#include <sstream>
// 假设我们的运算符优先级是:()
// 算术运算符 > 关系运算符 > 逻辑运算符
std::stack<char> expressionStack;
// 假定输入的表达式只包含数字和合法运算符
void pushOperatorToStack(const std::string &expression) {
std::istringstream iss(expression);
char token;
while (iss >> token) {
if (isdigit(token)) { // 如果是数字,直接读取
expressionStack.push(token - '0'); // 将数字转换成整数并推入栈
} else { // 遇到运算符
expressionStack.push(token); // 直接推入栈
}
}
}
int main() {
std::string input = "5 + 7 * (3 - 1)";
pushOperatorToStack(input);
for (char op : expressionStack) {
std::cout << op; // 输出操作符序列,这里会先出栈数字后出栈运算符
}
return 0;
}
```
在这个例子中,我们会看到运算符按其优先级从左到右压入栈,如果遇到数字则暂时不处理,等遇到下一个运算符再一起处理。
阅读全文